ビット演算計算機 - AND、OR、XOR、NOT、シフト操作

10進数・2進数・16進数の入出力で、整数のビット論理演算を即座に実行します。

演算を選び、10進数・2進数・16進数で値を入力すると、ビット演算の結果を計算できます。

ビット演算計算機 - AND、OR、XOR、NOT、シフト操作
10進数・2進数・16進数の入出力で、整数のビット論理演算を即座に実行します。

ビット演算計算機について

ビット演算は、整数の2進表現に直接作用する基本的な計算です。数値をひとまとまりとして扱うのではなく、各ビット位置を個別に調べて操作します。この低レベルな制御により、システムプログラミング、組み込み開発、暗号、性能重視のアルゴリズムで欠かせないものになっています。 AND演算 (&) は、2つのオペランドの対応するビットが両方とも1のときだけ1を返します。特定のビットをマスクする用途でよく使われ、たとえば `value & 0xFF` で任意の整数の下位8ビットだけを取り出せます。OR演算 (|) は、どちらか一方または両方のビットが1ならそのビットを1にするため、フラグの結合や特定ビットの設定に便利です。XOR演算 (^) は、2つの入力ビットが異なるときだけ1を出力するので、ビットの切り替え、等値判定、一部の暗号アルゴリズムに最適です。 NOT演算 (~) はオペランドのすべてのビットを反転します。JavaScript の32ビット符号付き整数モデルでは、`~n` は `-(n + 1)` と同じです。結果は分かりやすさのため、符号なし32ビットの2進文字列で表示されます。左シフト (<<) はすべてのビットを指定数だけ左へ移動し、2の累乗倍に相当します。右シフト (>>>) はビットを右へ移動し、2の累乗での整数除算に相当します。 現代のハードウェアでは、ビット演算は1回のCPUクロックで実行できるため、同等の算術演算より大幅に高速です。そのため、ハッシュ関数、チェックサム、グラフィックスでの色のパッキング(RGBAチャネルを1つの32ビット整数に格納する処理)、OSの権限フラグ、ネットワークプロトコル実装などで頻繁に使われます。 この計算機は10進数(基数10)、2進数(基数2)、16進数(基数16)の入力に対応し、3つの形式すべてで結果を同時に返します。手動変換なしで表現を見比べられます。すべての計算は、ECMAScript仕様に準拠したJavaScriptの32ビット整数ビット演算セマンティクスを使用します。

ビット演算の例

入力値と、10進数・2進数での結果を示す一般的な例です。

演算結果(10進数)2進表現
12 AND 1081100 & 1010 = 1000
12 OR 10141100 | 1010 = 1110
12 XOR 1061100 ^ 1010 = 0110
NOT 5-6~00000101 = 11111010(符号付き32ビット)
3 LEFT SHIFT 212011 << 2 = 1100(4倍)
24 RIGHT SHIFT 3311000 >>> 3 = 00011(8で割る)

ビット演算計算機の使い方

  1. 実行したいビット演算を選択します。AND、OR、XOR、NOT、左シフト、右シフトのいずれかです。
  2. 数値に合った入力形式(10進数、2進数、16進数)を選びます。
  3. 選択した形式で「1つ目の数」欄に最初の数値を入力します。
  4. 二項演算(AND、OR、XOR、シフト)では、「2つ目の数 / シフト量」欄に2つ目の数値またはシフト量を入力します。
  5. 「計算する」をクリックすると、10進数・2進数・16進数の結果が同時に表示されます。

ビット演算計算機 FAQ

ビット AND 演算とは何ですか?
ビット AND は、2つの数の対応する各ビットを比較し、両方が1のときだけ1を返し、それ以外は0を返します。たとえば、12 AND 10 の2進表現は 1100 & 1010 = 1000 で、10進数では 8 です。特定のビットをマスクしたり抽出したりする用途によく使われます。
ビット XOR はどのように動作しますか?
ビット XOR(排他的OR)は、2つの入力ビットが異なるときに1を返し、同じときに0を返します。たとえば、12 XOR 10 は 1100 ^ 1010 = 0110 = 6 です。XOR は暗号、チェックサム、他のビットに影響を与えずに特定ビットを切り替える用途で広く使われます。
NOT 演算は数値に何をしますか?
ビット NOT(~)は、オペランドのすべてのビットを反転します。32ビット符号付き整数演算では、~n は -(n + 1) に等しくなります。そのため ~5 = -6、~0 = -1 です。この計算機では、反転後のすべてのビットが分かるように、結果を符号なし32ビットの2進文字列で表示します。
左シフトと右シフトの違いは何ですか?
左シフト(<<)は、指定した桁数だけすべてのビットを上位方向へ移動し、空いた位置を0で埋めます。これは、シフト量に応じた2の累乗倍に相当します。右シフト(>>>)は、ビットを下位方向へ移動し、0で埋めるため、2の累乗での整数除算に相当します。
いつ16進数入力を使うべきですか?
メモリアドレス、色コード(たとえば赤の 0xFF0000)、ネットワークマスク、あるいはドキュメントやソースコードで16進数で表されることが多い値を扱うときに、16進数は便利です。各16進桁はちょうど4ビットを表すため、2進データをコンパクトで読みやすく表現できます。
なぜビット演算はプログラミングで重要なのですか?
ビット演算は1回のCPUサイクルで実行できるため、非常に高速です。システムプログラミングではハードウェアレジスタの設定、グラフィックスではRGBA色のパッキング、暗号では暗号アルゴリズム、ゲーム開発ではフラグのコンパクトな格納に使われます。これらを理解することはコンピュータサイエンスの基礎です。