次は 10 進数の負の整数を 2 進数に基数変換する方法について説明します。
負の整数を表現する方法はいくつかありますが、今回はもっともポピュラーな「2の補数」を用いて基数変換する方法について学びます。

2の補数表現を用いて 10 進数の負の整数を 2 進数に変換

A を 10 進数の負の整数とする

  1. 前ページを参考に A の絶対値 |A| を 2 進数に変換する (桁数は n ビット)
  2. もし先頭ビットが 0 でない場合は桁数を 1 つ増やして先頭に 0 を追加する
  3. 0 と 1 をひっくり返す
  4. 1 を足す

逆にある 2 進数が 2 の補数表現のとき、10 進数の整数に基数変換します。

2 の補数表現である 2 進数を 10 進数の整数に変換

先頭ビットが 0 の場合:

0 以上の整数なので、前ページと同様にして 10 進数に変換する

先頭ビットが 1 の場合:

負の整数なので、1を引き、0 と 1 をひっくり返し、前ページと同様にして正の 10 進数に変換してからマイナス符号を付ける

では例として 10 進数 -123 を 2 進数に変換してみます。桁数はとりあえず n = 7 ビットとします。

例: -123 を 2 の補数表現を使って 2 進数に変換

A = -123 とする

  1. |A| = 123 の 2 進数は前ページより n = 7ビットの 2 進数 0b1111011
  2. 先頭ビットが 0 でないので桁数を n = 8 ビットに増やし、先頭に 0 を追加して 0b01111011
  3. 1 と 0 をひっくり返すと 0b10000100
  4. 1 を足して n = 8 ビットの 2 進数 0b10000101 が得られる

逆に 0b10000101 を 10 進数の負の整数に変換してみます。

例: 0b10000101 を 10 進数の負の整数に変換

 

  1. 先頭ビットが 1 なので負の整数である
  2. 1 を引くと 0b10000100
  3. 1 と 0 をひっくり返すと 0b01111011
  4. 10進数に変換する。前ページより正の整数 123
  5. マイナス符号を付けて -123 が得られる