短い答え
2 進数は 2 進数です。すべての桁 (ビット) は 0 または 1 で、各位置は 2 の累乗を表します。 2 進数の 1010 は、10 進数の 1×8 + 0×4 + 1×2 + 0×1 = 10 に相当します。この計算機は、2 進算術、ビット単位の論理 (AND、OR、XOR、NOT)、ビット シフト、および 10 進数、16 進数、および 8 進数への即時変換を処理します。
重要なポイント
- 値は 32 ビット符号付き整数の範囲 (-2,147,483,648 ~ 2,147,483,647) に制限されます。その範囲外のバイナリ文字列は、暗黙的に切り捨てられるのではなく、拒否されます。
- ビット単位の AND/OR/XOR は数値をビットごとに比較し、算術加算や乗算とは異なります。1010 AND 0110 は 16 ではなく 0010 と同等です。
- n による左シフトは 2ⁿ を乗算することと同じです。 n による右シフトは、2ⁿ による整数 (フロア) 除算と同等です。
- 各 16 進数は正確に 4 つのバイナリ ビットにマップされるため、16 個の 4 ビット パターンを知っていれば、16 進数から 2 進数への変換は機械的に行われます。
2 進数の位の値の仕組み
小数点以下の桁の値が 10 の累乗を使用するのと同様に、2 進数の桁の値は 2 の累乗を使用します。 8 ビット数値 10110101 を右から左に読み取ると、次のようになります。
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
1 がある位置の値を合計すると、128 + 32 + 16 + 4 + 1 = 181 となります。つまり、2 進数の 10110101 は 10 進数の 181 と等しくなります。
ビット演算と算術演算
| 手術 | 何をするのか | 例 |
|---|---|---|
| AND (&) | 両方のビットが 1 の場合のみ 1 | 1010 & 0110 = 0010 |
| OR (|) | どちらかのビットが 1 の場合、1 | 1010 | 0110 = 1110 |
| XOR (^) | 1 ビットが異なる場合 | 1010 ^ 0110 = 1100 |
| 左シフト (<<) | ビットを左にシフトし、0 で埋めます (×2ⁿ) | 0011 << 2 = 1100 |
| 右シフト (>>) | ビットを右にシフトします (÷2ⁿ、切り捨て) | 1100 >> 2 = 0011 |
ビット単位の演算では、個々のビットを比較またはシフトします。加算とは異なり、位置間で桁上げが行われません。そのため、1010 AND 0110 が合計に似たものではなく 0010 に到達します。
避けるべきよくある間違い
- ビット単位の AND/OR を算術加算または乗算のように扱います。キャリーなしでビットごとに演算されます。
- 32 ビットの符号付き範囲の上限を忘れると、31 を超えるバイナリ文字列はサポートされている範囲をオーバーフローし、エラーが返されます。
- ビット単位の NOT では、出力される数字を反転するだけであることが期待されます。2 の補数表現では、正の数を NOT すると、単純な数字の反転ではなく、負の数が生成されます。
- Assuming right shift rounds — it truncates (floors) toward negative infinity for negative numbers, so 7 >> 1 = 3, not 3.5 or 4.