2の補数の計算

この2の補数の計算ツールは、符号付き整数を2進数に、また2進数から整数に変換します。例:−42は8ビットで1101 0110です。

出典:Hennessy/Patterson, Computer Organization and Design, Kap. „Signed and Unsigned Numbers“ (Zweierkomplement)。更新日:

符号付きの整数です。桁区切りも使えます(1,024)。
マイツールボックス入力内容はこのブラウザーにのみ保存されます。

結果

結果
-42=1101 0110(2の補数、8ビット)
いろいろな表し方
量値
10進数の値-42
2の補数1101 0110
1の補数での表現1101 0101
16進数0xD6
表せる範囲-128 … 127
絶対値の2進数0010 1010
計算の手順
  • 絶対値|-42|を2進数(8ビット)で表すと0010 1010です。
  • すべてのビットを反転します(1の補数):1101 0101。
  • 1を足します(2の補数):1101 0110。
2の補数は、コンピュータが符号付き整数を保存する一般的な方式です。0は1通りだけで、範囲は−2^(n−1)〜2^(n−1)−1です。

計算方法

2の補数は、コンピュータで負の整数を表す標準的な方法です。最上位ビットが符号の役目をし、足し算と引き算を同じ回路で、特別な場合分けなしに行えます。

変換のしかた

負でない数は、ふつうに2進数で書き、左を0で埋めます。負の数は、絶対値を2進数で書き、すべてのビットを反転して(1の補数)、1を足します。逆に、最上位ビットが1なら、値はu−2ⁿです(uはビット列を符号なしの数として読んだ値)。nビットで表せる範囲は−2^(n−1)〜2^(n−1)−1で、8ビットなら-128〜127です。

計算例

−42を8ビットで表します。絶対値42は0010 1010です。反転すると1101 0101(1の補数)、1を足すと1101 0110、16進数でD6です。検算:1101 0110を符号なしで読むと214で、214−256=-42になります。1000 0000は8ビットで最小の-128を表し、+128はもう収まりません。16ビットでは−1は16進数でFFFFです。1101 0110を1の補数として読むと、値は-41になります。

よくある質問

負の数を2の補数にするにはどうしますか?

絶対値を2進数で書き、すべてのビットを反転して、1を足します。8ビットの−42なら、0010 1010 → 1101 0101 → 1101 0110です。

1の補数と2の補数の違いは何ですか?

1の補数はビットを反転するだけで、2の補数はそのあとに1を足します。これにより0が1通りになり、特別な規則なしで計算できます。

1バイトを2の補数で表すと、範囲はどうなりますか?

8ビットでは-128〜127で、256通りの値を表せます。

出典・根拠

更新日: · 編集方針

関連ツール