使い方
- 第1の値(A)に1つめの値を、その演算で使う場合は第2の値(B)に2つめの値を入力します。
- 数の表記で値を入力した進数を選び、演算を選びます。
- シフトか回転の場合はシフトまたは回転の量を設定します。結果が持つべきビット幅を選びます。
- 16進、10進(符号なし)、2進の結果と、その下のビットごとの表を読みます。
論理演算
0xCA AND 0x0F = 11001010 AND 00001111 = 00001010 = 0x0A
- ANDは、両方のビットが1の位置だけ1になります。一部のビットを残し、ほかを0にするために使います。
- ORは、どちらかのビットが1の位置で1になります。ビットを立てるために使います。
- XORは、ちょうど一方のビットだけが1の位置で1になります。同じXORを2回かけると、元の値に戻ります。
- NANDとNORは、ANDとORの結果をさらに反転したものです。NOTは、幅の中のすべてのビットを反転します。
シフトと回転
左シフトは、すべてのビットを1つ上の位置に動かし、下の位置を0で埋めます。上から出たビットは失われます。論理右シフトは、すべてのビットを1つ下に動かし、上の位置を0で埋めます。算術右シフトは、上の位置を符号ビットの複製で埋めるので、負の値は負のままです。回転は、一方の端から出たビットを、もう一方の端に戻します。
0xCA shifted left by 1 = 10010100 (0x94); logical right = 01100101 (0x65); arithmetic right = 11100101 (0xE5); rotate left = 10010101 (0x95)
幅が重要であること
8ビットでは0のNOTは0xFF、16ビットでは0xFFFF、32ビットでは0xFFFFFFFFになります。結果は、幅と同じ数のビットをもつためです。幅より多くのビットが必要な値は、全部は保存されません。このツールは下位のビットを使い、確認の行を赤で示します。
このツールが扱わないこと
- 言語による違い。JavaScriptのビット演算子は、被演算子を32ビット整数に変換するため、64ビットの結果を示せません。このツールは、選んだ幅のビットを示し、64ビットの値を正確に扱うためにBigIntを使います。
- 構造体の中のビットフィールド、バイト順、ファイル形式:それらについては、16進ビューアを参照してください。
計算例:8ビットでの0xCA AND 0x0F
第1の値にCA、第2の値に0Fを入力し、数の表記を16進に、ビット幅を8ビットにします。結果は00001010で、16進では0x0A、10進では10です。両方の値で同じ位置にあるビットだけが残ります。その数は2つで、どちらも0Fが残す下位4ビットにあります。
| 結果 | 値 |
|---|---|
| 16進 | 0x0A |
| 2進 | 0b0000 1010 |
| 10進(符号なし) | 10 |
よくある質問
論理右シフトと算術右シフトの違いは何ですか?
どちらもビットを1つ下に動かします。論理シフトは上の位置を0で埋めるので、値を符号なしとして扱います。算術シフトは符号ビットを複製するので、負の値は負のままです。0xCAは−54で、1ビット右にシフトすると−27(0xE5)になります。
NOTの結果が幅によって違うのはなぜですか?
NOTは、幅がもつすべてのビットを反転します。0は8ビットでは00000000なので、NOTは11111111(0xFF)になります。32ビットでは0が32ビットをもつので、NOTは0xFFFFFFFFになります。同じ数でも、幅によってビットの数が異なります。
回転はシフトにないどんな働きをしますか?
シフトは一方の端から出たビットを失います。回転はそれらをもう一方の端に戻すので、ビットは失われません。幅と同じ量だけ回転すると、元の値に戻ります。
幅に収まらない値に警告が出るのはなぜですか?
幅より多くのビットが必要な値は、全部は保存できません。ツールは下位のビットを使うので、8ビットでは300が44になり、確認の行で何が起きたかを示します。そのため、結果を入力した値として受け取らないでください。
2進数の数字をスペースで区切って入力できますか?
はい。スペースとアンダースコアは無視されるので、1100 1010と11001010は同じ値です。16進数には0xの接頭辞、2進数には0bの接頭辞を付けてもかまいません。
出典
数値と文章の最終確認日:2026年11月10日火曜日。