AZ Tools

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 の補数)-42
符号なし214
Hex0xd6
八進0o326
1 の補数0x29

2 の補数:最上位ビットが符号です。同じパターンが符号付きと符号なしの値として読まれます。

使い方

  1. 値を十進で入力するか、hex・二進・八進は 0x / 0b / 0o 接頭辞を付けて入力。
  2. ビット幅を選択(8・16・32・64)。
  3. 符号付き/符号なしの値、ビットパターン、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 の補数も表示します。

関連ツール