1. 基本情報技術者講座トップページ
  2. 1の補数と2の補数で2進数のマイナスの数値を表現する

基本情報技術者試験講座 1の補数と2の補数で2進数のマイナスの数値を表現する

基本情報技術者試験で必ずマスターしておかなければならいのが2の補数表現である。基本情報技術者試験において繰り返し出題されるテーマである。

補数とはでは、補数の概念を理解してもらうために10の補数と9の補数を例に補数とは、ある基準となる数値から対象となる数値を引いたものであることを解説した。

ここでは、2進数のマイナスの数値を表現するときに用いられる2の補数表現について解説する。

基本情報講座 1の補数と2の補数のポイント

1の補数の求め方
各けたの1と0を反転する
2の補数の求め方
1の補数+1
マイナスの10進数を2の補数表現する
10進数を2進数に変換し、その2進数を2の補数表現する
2の補数表現されたマイナスの2進数を10進数に変換する
最上位ビットに注目して、1ならばマイナスの数値であるから2の補数を求める。0ならばそのまま2進数を10進数に変換する。

基本情報技術者講座 1の補数と2の補数

2進数においては、基数の補数は2進数であるから、2の補数である。減基数の補数は、1の補数である。

2の補数と1の補数も10の補数と9の補数と同じ方法で求めることができる。

例えば、8ビット2進数の00011011の2の補数と1の補数は、以下の式で求めることができる。

2の補数
28−00011011
1の補数
28−1−00011011

28を2進数で表すと、100000000である。28−1を2進数で表すと11111111である。

したがって、2の補数と1の補数は以下のとおりである。

基本情報技術者講座1の補数と2の補数

10進数の引き算であれば普段おこなっているのでスムーズに計算できるだろう。しかし、普段使っていない2進数の引き算では繰り下がりが慣れていないと時間がかかる。

2の補数と1の補数を見ると以下のことが分かる。

  • 1の補数は、各けたの1と0を反転したものである
  • 2の補数=1の補数+1

以上から2の補数と1の補数は引き算をおこなわずすに以下の順で求めればよい。これは、とても重要なのでしっかりマスターして欲しい。

  1. 10進数を2進数に変換する
  2. 表現するビット数で表す(上位に足りないけた数分0を補充する)
  3. 各ビットを1と0を反転させる(1の補数)
  4. 1の補数に+1する(2の補数)

このページの先頭