ビット演算計算機
32ビット整数のAND・OR・XOR・NOT・シフトを、ビット単位の可視化付きで計算
オペランド
演算
結果
12 & 10結果の32ビット表現
値は32ビット整数として扱います。符号付き10進は最上位ビットを符号とみなす2の補数表現、符号なし10進は32ビット全体を正の値として読みます。右シフトは論理シフト(左から0が入ります)です。
このツールについて
ビット演算計算機は、2つの整数に対するAND・OR・XOR・NOT・左右シフトを計算する、開発者と情報系学生のためのツールです。各オペランドを2進・10進・16進のいずれかで入力でき、結果は3つの基数すべてで同時に表示されます。さらに32ビットのビットマップをリアルタイムに描画するため、どのビットが反転したかを一目で確認できます。フラグやビットマスクのデバッグ、権限ビットの操作、データのパッキング、コンピュータが最下層でビットをどう扱うかの学習に役立ちます。
使い方
- 1 オペランドAを入力し、基数(2進・10進・16進)を選びます。
- 2 演算を選びます。AND・OR・XOR・左右シフト、または単項のNOT。
- 3 2項演算ならオペランドBを、シフトならシフトするビット数を入力します。
- 4 結果を10進・符号なし・16進・2進で読み、ハイライトされたビットを確認します。
仕組み
ビット演算は32本のビットを1本ずつ独立に処理します。ANDは両方のビットが1のときだけ結果ビットを1にするため、特定のビットだけを残す「マスク」に使います。ORはどちらかのビットが1なら1にするので、フラグを立てる用途に使います。XORは2つのビットが異なるときだけ1にするため、ビットの反転(トグル)や簡易チェックサムに最適です。NOTは単項演算で、すべてのビットを反転し0を1に、1を0にします。左シフト(<<)は全ビットを最上位側へ動かし空いた桁を0で埋めるため、1桁ごとに2倍になります。論理右シフト(>>)は逆向きに動かし0で埋めます。負の数は2の補数で格納されるため、同じ32ビットを符号付き(最上位ビットが符号)としても符号なしとしても読めます。これがこのツールが両方を表示する理由です。例えば 12 AND 10 = 8、12 OR 10 = 14、12 XOR 10 = 6、1 << 4 = 16、NOT 0 は全ビットが1で符号付きなら-1、符号なしなら4294967295になります。
よくある質問
AND・OR・XORの違いは?
ANDは両方のオペランドで立っているビットだけを残すので、マスクによるビットのクリアや検査に使います。ORはどちらかで立っていれば1にするので、ビットを立てる用途です。XORはちょうど一方だけで立っているときに1にするので、ビットの反転や差分検出に使います。
なぜ NOT 0 が -1 でも 4294967295 でもあるのですか?
NOTは32ビットすべてを反転するため、0は32個の1になります。これを2の補数の符号付き整数として読むと-1、符号なし32ビット整数として読むと4294967295です。どちらも同じビットを表します。
左シフト・右シフトは実際に何をしますか?
nビット左シフトは全ビットを最上位側へn桁動かし0で埋めるため、2のn乗倍になります。nビット論理右シフトは逆向きに動かし0で埋めるため、非負の値では2のn乗で割ったことになります。
なぜ32ビットに限定されるのですか?
JavaScriptのビット演算子や多くのCPUの整数レジスタは32ビット幅で動作するため、本ツールもそれに合わせています。シフト量は32で割った余りが使われ、値は32ビットの範囲で折り返します。これはC・Java・JavaScriptと同じ挙動です。
関連ツールと用途
1つの値を2進・8進・10進・16進で相互変換するには進数変換ツールを、文字コードにはASCII変換を、色のマスク操作にはカラーコード変換をご利用ください。