この計算機でできること
このツールは、2つの非負整数に対して基本的な3つのビット論理演算 ― AND・OR・XOR ― を計算します。それぞれの値は、10進(基数10)、16進(基数16)、8進(基数8)、6進(基数6)、2進(基数2)のいずれかで入力できます。各演算の結果は5種類すべての基数で表示されるため、用途に応じて好きな表記で確認できます。値は符号なし(unsigned)として扱われ、\(0\) 〜 \(2^{64} - 1\) の範囲に対応します。
使い方
1つ目の数値を x の欄に入力し、その数値が何進で書かれているかを選びます。2つ目の数値 y も同様に入力します。基数の選択は入力テキストの読み取り方を決めるだけで、演算は常に内部の整数値に対して行われます。出力表には、AND・OR・XOR の結果が、10進・16進・8進・6進・2進の各行に分けて表示されます。
計算式の解説
ビット論理演算は、各整数の2進数表現に対して、ビット位置ごとに1つずつ処理を行います。AND は両方のビットが 1 のときだけ結果ビットを 1 にします。OR は少なくとも一方のビットが 1 のときに結果ビットを 1 にします。XOR(排他的論理和)は、ちょうど一方のビットだけが 1 のときに結果ビットを 1 にします。同じ値どうしの XOR は 0 になるため、パリティ計算やチェックサムの処理に最適です。
$$\begin{gathered} X = \text{parse}\!\left(\text{x},\ \text{base}_x\right), \quad Y = \text{parse}\!\left(\text{y},\ \text{base}_y\right) \\[1.2em] \text{AND} = X \mathbin{\&} Y, \quad \text{OR} = X \mid Y, \quad \text{XOR} = X \oplus Y \end{gathered}$$
計算例
\(x = 115\)、\(y = 234\)(いずれも10進)の場合を考えます。2進数では \(115 = 0111\,0011\)、\(234 = 1110\,1010\) です。AND の結果は $$0110\,0010 = 98 = \text{16進 } 62 = \text{8進 } 142 = \text{6進 } 242 = \text{2進 } 1100010$$ となります。OR の結果は $$1111\,1011 = 251 = \text{16進 } \text{fb} = \text{8進 } 373 = \text{6進 } 1055$$ です。XOR の結果は $$1001\,1001 = 153 = \text{16進 } 99 = \text{8進 } 231 = \text{6進 } 413 = \text{2進 } 10011001$$ となります。
ビット単位の真理値表
ビット単位の演算は、2つのビットの各ペアに独立して作用します。以下の表は、2つの入力ビット \(A\) と \(B\) の可能な組み合わせすべてと、AND(\(\&\))、OR(\(\mid\))、XOR(\(\oplus\))の結果となる出力ビットを示しています。
| A | B | A AND B(\(A \mathbin{\&} B\)) | A OR B(\(A \mid B\)) | A XOR B(\(A \oplus B\)) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
言葉で説明すると:AND は両方のビットが1の場合にのみ1を返します。OR は少なくとも1つのビットが1の場合に1を返します。XOR はビットが異なる場合に1を返します。2つの複数ビット整数を組み合わせる場合、演算は各位置のビットに個別に適用されます。例えば、\(12 = 1100_2\) と \(10 = 1010_2\) をビット単位で組み合わせると、AND \(=1000_2 = 8\)、OR \(=1110_2 = 14\)、XOR \(=0110_2 = 6\) となります。
基数桁変換表
AND、OR、XORを計算する前に、オペランドが正しい基数で入力されていることを確認してください。セナリー(6進法)は基数6(桁0~5)です。オクタル(8進法)は基数8(桁0~7)です。16進法は基数16(桁0~9、次にA~F)です。この表は、サポートされている5つの基数すべての10進数0~16をリストしています。
| 10進法(10) | 16進法(16) | 8進法(8) | 6進法(6) | 2進法(2) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 |
| 2 | 2 | 2 | 2 | 10 |
| 3 | 3 | 3 | 3 | 11 |
| 4 | 4 | 4 | 4 | 100 |
| 5 | 5 | 5 | 5 | 101 |
| 6 | 6 | 6 | 10 | 110 |
| 7 | 7 | 7 | 11 | 111 |
| 8 | 8 | 10 | 12 | 1000 |
| 9 | 9 | 11 | 13 | 1001 |
| 10 | A | 12 | 14 | 1010 |
| 11 | B | 13 | 15 | 1011 |
| 12 | C | 14 | 20 | 1100 |
| 13 | D | 15 | 21 | 1101 |
| 14 | E | 16 | 22 | 1110 |
| 15 | F | 17 | 23 | 1111 |
| 16 | 10 | 20 | 24 | 10000 |
他の基数の値を確認するには、2進数1100コンバーターを使用できます。これは10進数12を返します。
定義と用語集
- ビット
- デジタル情報の最小単位で、値0または1を取ります。このカリキュレーターのすべての整数は、ビットのシーケンスとして処理されます。
- ビット単位の演算
- 2つのオペランドの対応する各ビットに独立して適用される演算。AND、OR、XORは、ここで計算される3つの結合演算です。
- 基数(記数法の基)
- 位置記数法が使用する異なる桁の数。10進法は基数10、2進法は基数2、8進法は基数8、6進法は基数6、16進法は基数16を持ちます。各桁の位置は基数の冪を表します。
- 符号なし整数
- 符号ビットのない非負の整数。すべてのビットは大きさに寄与します。このツールは符号なしの値のみを受け入れます。
- セナリー(6進法)
- 桁0~5を使用する基数6の記数法。位の値は6の冪です。例えば、\(24_6 = 2\times6 + 4 = 16\)。
- 16進法
- 桁0~9と文字A~F(A=10…F=15)を使用する基数16の記数法。各16進数の桁は、正確に4つの2進ビットにマップされます。
- 8進法
- 桁0~7を使用する基数8の記数法。各8進数の桁は、正確に3つの2進ビットにマップされます。
- マスク
- ビット単位の演算で使用される定数値で、特定のビットを選択、設定、またはクリアするために使用されます。例えば、\(0\text{F}_{16}\)でANDすると、下位4ビットのみが保持されます。
- パリティ(偶奇性)
- 値内の1ビットの数が偶数か奇数か。XORはパリティチェックの基礎です。すべてのビットのXORは、奇数パリティの場合は1、偶数パリティの場合は0に等しい。
よくある質問
負の数は使えますか? いいえ。入力は非負の符号なし整数のみで、2の補数による符号処理は行いません。
無効な桁を入力するとどうなりますか? 選んだ基数の範囲外の桁(例:8進数での「8」)は無視され、0 として扱われます。基数の選択が正しいか確認してください。
なぜチェックサムに XOR を使うのですか? バイト列を XOR でまとめ、同じ列をもう一度 XOR すると元に戻って 0 になります。この性質により、XOR は1ビットの変化を検出したりパリティを計算したりするための、シンプルで可逆的な手段になります。