基本情報技術者試験対策(9)「2の補数表現と小数点形式(2)」

スポンサーリンク
IT系

マイナスの数を求める方法

2の補数表現では、 ある数に足すと0になる数を求め、 それをある数のマイ ナスの数とする。 ある数に足すと 0 になる数は、 「反転して1を加える」ことで求められる。 反転するとは、0と1を逆にすることである。

例えば、ある数を00000001とした場合、 これを反転すると11111110になる。 11111110に1を加えると、 11111111になる。 これが、 00000001 のマイナスの数、つまりマイナス1である。

ステップ操作内容結果(8ビット)説明
元の数(正の数)00000001これは「+1」を表す2進数である。
ビットを反転する111111100→1、1→0 に反転します。これで「1の補数」になる。
反転した数に1を加える1111111111111110 + 1 = 11111111。これが「2の補数」である。
結果の意味−12の補数表現では、11111111 は「−1」を意味する。

反転して1を加えることで、マイナスの数が求められる仕組みを説明しよう。 00000001と、 それを反転しただけの11111110を足すとどうなるか。 すべての桁が1の11111111になる。 それでは、 00000001 と、それを反転した11111110 より大きい11111111を足すとどうなるか。 すべての桁が1の11111111より大きくなるので、9ビット目に桁上がり して100000000になるが、入れ物のサイズが8ビットなので、 桁上がりの 1が消えて、00000000になる。

つまり、ある数を反転して1を加えた数は、ある数に足して0になる数になる。 ある数に足して0になる数は、ある数のマイナスの数である。

マイナスのマイナスはプラスになる

00000001(1)を反転して1を加えると11111111(ー1) になる。 逆に、11111111(ー1)を反転して1を加えると00000001 (1)なる。 マイナスのマイナスは、プラスだからである。

2の補数表現で表されたマイナスの数の値が知りたい場合は、反転して1 加えてプラスの数にしてみよう。 例えば、 11111100は、反して1を加えると00000100 (4) なので、マイナス4だとわかる。

ステップ操作内容結果(8ビット)説明
元の2進数(2の補数表現)11111100これは負の数(マイナスの値)を表している。
ビットを反転する000000110→1、1→0 に反転する。これで「1の補数」になる。
反転した数に 1 を加える0000010000000011 + 1 = 00000100 になる。
得られた結果を10進数に直す4これは「4」を意味する。
元の符号を付ける−4よって、11111100 は「−4」を表す。

8ビットの符号あり整数で表せる数の範囲

符号あり整数では、符号ビットが0なら0以上のプラスの数であり、1ならマイナスの数である。 8ビットの符号あり整数を10進数に変換すると、0000000 ~ 01111111が0~127になり、 11111111~10000000が1~ー128になる。 マイナスの方が、表せる値が1つ多いのは、 0がプラスの範囲に入っているからである。

参考)情報処理教科書 出るとこだけ!基本情報技術者[科目A][科目B]2025年版

コメント

タイトルとURLをコピーしました