ビット演算・フラグ計算機

2つの整数の AND・OR・XOR・NOT・シフトを、8/16/32ビット幅の2進・16進・10進で並べて表示します。下のパネルでは、名前をつけたフラグの合成と分解ができます。

10進はそのまま(-5 も可)、16進は 0x、2進は 0b をつけて入力。区切りの _ と空白は無視します。

ビット幅

演算結果

フラグの合成と分解

フラグ名ビット位置値

チェックしたフラグの合成値

    ビット演算・フラグ計算機でできること

    2つの整数の AND・OR・XOR・NOT・左右シフトを、8/16/32ビット幅の2進・16進・10進で一覧表示します。権限やオプションなどのビットフラグを合成したり、値からどのフラグが立っているか分解したりできます。

    使い方

    1. 「A」「B」に整数を入れます。10進はそのまま(負の数も可)、16進は 0x、2進は 0b をつけます。区切りの _ や空白は無視されます。
    2. 「ビット幅」で 8bit・16bit・32bit を選び、「シフト量 n」を入れます。
    3. 「演算結果」で AND・OR・XOR・NOT・左シフト・論理右シフト・算術右シフトの結果を、2進(1をオレンジ表示)・16進・10進・符号付き10進で確認します。
    4. 「フラグの合成と分解」でフラグ名とビット位置を設定し、チェックを付けると合成値と「flags = READ | EXEC」のような式が出ます。「式をコピー」「Aに入れる」も使えます。
    5. 「値を分解」に値を入れると、立っているフラグと名前のないビットを一覧にします。「この値でチェックを付け直す」で上のチェックに反映できます。

    計算の仕組みと注意点

    よくある質問

    READ=1, WRITE=2, EXEC=4 のようなフラグを組み合わせると何になりますか?

    ビットごとの OR で足し合わせます。READ と EXEC なら 1 | 4 = 5(0x5)です。フラグ一覧で READ と EXEC にチェックを付けると合成値と式が表示されます。

    >> と >>> の違いは何ですか?

    >>> は空いた上位ビットに0を詰める論理シフト、>> は符号ビットを詰める算術シフトです。A に負の数(例 -8)を入れて32bitにすると、2つの結果の違いを確認できます。

    ある値にどのフラグが立っているか調べるには?

    値 & フラグ が0でなければ、そのフラグは立っています。「値を分解」に値を入れると、立っているフラグ名とビット位置が一覧で表示されます。

    NOT の結果が大きな数になるのはなぜですか?

    NOT はすべてのビットを反転するため、上位の0がすべて1になるからです。符号付きとして読むと −(A+1) になります。結果の「符号付き」欄で確認できます。