2 の補数変換 (8〜64ビット)
変換
2 の補数は、ほぼすべてのコンピュータが符号付き整数を格納する方式です:最上位ビットが符号で、負数は大きさのビットを反転して 1 を加えて作ります。この変換器は任意の整数を — 十進、hex(0x)、二進(0b)、八進(0o)、正でも負でも入力 — 選んだ 8・16・32・64 ビット幅に収め、符号ビットを強調した結果のビットパターンを表示します。その 1 つのパターンから符号付き(2 の補数)の値と符号なしの値の両方を読み取り、hex・八進・1 の補数も併せて表示します。「0xFF は符号付きバイトとして何を意味するか?」(−1)や「−128 は 8 ビットでどう格納されるか?」(0x80)といった疑問に素早く答え、値が幅をあふれたときどうラップするかを確認できます。任意精度の BigInt 演算で 64 ビット値も正確です。すべてローカルで動作し、アップロードされません。
hex は 0x、二進は 0b、八進は 0o を接頭辞に付け、それ以外は十進です。先頭の − が使えます。
1101 0110
2 の補数:最上位ビットが符号です。同じパターンが符号付きと符号なしの値として読まれます。
使い方
- 値を十進で入力するか、hex・二進・八進は 0x / 0b / 0o 接頭辞を付けて入力。
- ビット幅を選択(8・16・32・64)。
- 符号付き/符号なしの値、ビットパターン、hex/八進、1 の補数を読みます。値が収まらずラップした場合は注記が出ます。
よくある質問
- 負数はどう表現されますか?
- 2 の補数では、絶対値の二進を取り、すべてのビットを反転(1 の補数)してから 1 を加えます。8 ビットの −5 の場合:5 は 00000101、反転で 11111010、1 を加えて 11111011 = 0xFB です。最上位ビットが 1 なら負を表します。このツールはどの幅でも自動的に処理します。
- なぜ 0xFF が 255 と −1 の両方で表示されるのですか?
- 同じビットパターンでも、符号なしで読むか符号付きで読むかで違う数を意味します。符号なしバイトとして 11111111 は 255、符号付き 2 の補数バイトとしては −1 です。ハードウェアや言語は型ごとに 1 つの解釈を選びますが(例:uint8 と int8)、このツールは両方を同時に表示します。
- 数が幅に収まらないとどうなりますか?
- ラップします。幅の範囲外の値は 2^幅 で割った余りに減ります — 固定幅整数演算がオーバーフロー時に行うのと同じです。例えば 8 ビットの 300 は 300 − 256 = 44 になり、符号付きの読みはそのパターンに従います。ラップが起きると注記が表示されます。
- 1 の補数と 2 の補数の違いは?
- 1 の補数は単なるビット NOT で、すべての 0 が 1 になり、その逆も同様です。2 の補数は 1 の補数に 1 を加えたもので、ゼロが 1 つだけで加算が均一なため、現代の CPU は符号付き整数にこれを使います。ツールは参考として 1 の補数も表示します。
関連ツール
BCD変換器 (2進化10進数)
10進数と8421 2進化10進数を相互変換 — 桁ごとの4ビットニブル、パックドBCDの16進バイト、BCD妥当性チェック。
グレイコード変換器
10進数・2進数・反射2進グレイコードを双方向で変換、任意の固定ビット幅と0-7の対照表付き。
IEEE 754 浮動小数点変換 (32 & 64ビット)
任意の数の正確な IEEE 754 ビット配置を float32・float64 で確認 — 符号・指数・仮数ビット、hex、格納値、丸め — または hex ビットを数値に復号、ブラウザ内で。
ローマ数字コンバーター
1〜3999 のアラビア数字とローマ数字を相互変換します。
基数変換ツール
2進数・8進数・10進数・16進数の間で数値を変換。
単位変換
長さ・重さ・温度・面積・体積・速度・時間を変換。