負の10進数を2の補数へ変換する方法|8ビットの計算例

この記事の要点

別の値を変換する

ビット幅を選び、変換結果と手順を確認できます。

2の補数変換ツールを使う

負の10進数を変換する基本手順

  1. 値が選んだビット幅の範囲内か確認します。
  2. 負号を外した絶対値を2進数にし、左側を0で埋めます。
  3. 指定幅の全ビットを反転します。
  4. 反転後のビット列に1を足します。
ビット幅は省略できません

-1は8ビットなら1111 1111、16ビットなら16個の1です。先に幅を固定します。

例:-42を8ビットへ変換

42は32 + 8 + 2なので0010 1010です。反転すると1101 0101、1を足すと1101 0110になります。

  1. 42 → 0010 1010
  2. 0010 1010 → 1101 0101
  3. 1101 0101 + 1 → 1101 0110
結果

-42 = 1101 0110(8ビット)

検算は214 - 2⁸ = 214 - 256 = -42です。

16進数へ変換する

右から4ビットずつ区切ります。1101はD、0110は6です。

1101 0110 → D6 → 0xD6

D6は8ビット符号付きなら-42、符号なしなら214です。HEXだけでは符号の有無は決まりません。

正の数と0はそのまま表す

0以上の値は反転しません。42は0010 1010、0は0000 0000です。8ビットの正の最大値127は0111 1111です。

よくある間違い

よくある質問

負の10進数を2の補数へ変換する手順は?

ビット幅を決め、絶対値をその幅の2進数にし、全ビットを反転して1を足します。

-42の8ビット2の補数は何ですか?

2進数では11010110、16進数ではD6です。

正の数にも反転が必要ですか?

不要です。通常の2進数を指定したビット幅まで0で埋めます。

ビット幅を決める必要があるのはなぜですか?

反転するビット数と表現範囲がビット幅で決まるためです。