本文へスキップ
にゃんこツール

ビット演算計算機(AND/OR/XOR/NOT/シフト・2の補数)

2つの値とビット幅、演算を選ぶと、結果を2進・10進・16進で同時に表示し、立っているビットを色で見分けられます。値は10進、0x付きの16進、0b付きの2進、負数(2の補数)で入力でき、64bitでも桁あふれせず計算します。単純な進数変換だけなら 進数変換ツール をご利用ください。ブラウザ内で処理され、入力内容がサーバーに送信されることはありません。

🔒 ブラウザ内で完結・入力データはサーバーに送信されません

計算結果

青いマスが1、灰色のマスが0です。左端が最上位ビットで、8ビットごとに折り返します。

注意事項

  • 値は選んだビット幅の符号なし範囲(例: 8bitなら0〜255)か、2の補数の符号付き範囲(-128〜127)で入力できます。負数は2の補数のビット列に変換して計算します。
  • NOT・NAND・NOR・XNORの結果は、選んだビット幅で切り詰めます。幅を変えると上位ビットの0/1が変わります。
  • 左シフトであふれた上位ビットは捨てます。シフト量がビット幅以上のときは、左シフトと論理右シフトは0、算術右シフトは符号ビットで埋めた値になります。
  • ローテートは、あふれたビットを反対側に回します。回転量はビット幅で割った余りとして扱います。
  • 数値の途中にあるアンダースコアと空白は無視します(例: 0b1111_0000)。

用語解説

2の補数

負の整数をビット列で表す方法です。正の値のビットを反転して1を足すと負数になります。8bitなら-1は11111111、-128は10000000です。最上位ビットが1なら負数として読みます。

論理右シフトと算術右シフト

論理右シフトは空いた上位ビットを0で埋めます。算術右シフトは符号ビットのコピーで埋めるため、負数は負数のまま2のべき乗で割った値になります。

ローテート

シフトであふれたビットを捨てず、反対側から戻す操作です。ハッシュ関数や暗号のアルゴリズムでよく使われます。

XOR(排他的論理和)

2つのビットが異なるときだけ1になる演算です。同じ値で2回XORすると元に戻るため、簡易的な暗号化やフラグの反転に使われます。

よくある質問

負の数を入力するとビット列はどうなりますか?

2の補数で表します。たとえば8bitで-1と入力すると11111111(0xFF)、-128なら10000000(0x80)になります。結果の符号付き10進の欄では、最上位ビットが1の値を負数として読み替えた値を確認できます。

論理右シフトと算術右シフトは何が違いますか?

空いた上位ビットの埋め方が違います。論理右シフトは常に0で埋め、算術右シフトは符号ビットで埋めます。8bitで0x80(-128)を1ビット右にずらすと、論理では0x40(64)、算術では0xC0(-64)です。

64bitの値でも正確に計算できますか?

できます。内部ではJavaScriptのBigIntを使うため、2の53乗を超える値でも丸め誤差は出ません。64bitの最大値は18446744073709551615(0xFFFFFFFFFFFFFFFF)です。

シフト量にビット幅以上の値を入れるとどうなりますか?

左シフトと論理右シフトは結果が0になり、算術右シフトは符号ビットで全体が埋まります。ローテートはビット幅で割った余りだけ回転します。C言語などではこの場合の動作が未定義なので、実際のコードで使う前に言語の仕様を確認してください。

このページをシェア

↑↓ 選択 Enter 開く Esc 閉じる