2の補数/th>

◆2の補数

 2の補数とは、ある正の数値を負の数値に変換する事です。
 例で言えば 50(10) → -50(10) へと変換します。

50(10) → 00110010(2) 2進数に変換
ここで注意すべきは、正の数を表すために先頭は「0」が必要であること。
00110010 → 11001101 ビット反転
( 0 を 1 に、1 を 0 に)

11001101 → 11001110 1を足す。

 これで2進数の -50(10) が表現されます。
 なぜこんな事をするのかと言いますと、減算を加算で計算できるため、コンピュータの内部の処理(CPUの計算?)も早くできるという事らしいです。  注意点として、先頭の第1桁は符号として扱われる事と( 0 ・・・ 正 / 1 ・・・ 負 )ビット数は同じする事です。 上の例は8ビットで考えています。


 確認の為、100(10) + -50(10) = 50(10) である事を確認してみます。2進数で計算すると下の様になるはずです。

  01100100 100(10)
11001110 -50(10)

  100110010

 計算結果は上の様になります。ここで注意しないといけないのが、例では8ビットで2の補数をして計算しているます。 しかし結果は9ビットです。なので一番左が切り捨てられてしまいます。よって結果は 00110010 の10進数で50という事になります。


TOPページに戻る