マイナスの数を求める方法
2の補数表現では、 ある数に足すと0になる数を求め、 それをある数のマイ ナスの数とする。 ある数に足すと 0 になる数は、 「反転して1を加える」ことで求められる。 反転するとは、0と1を逆にすることである。
例えば、ある数を00000001とした場合、 これを反転すると11111110になる。 11111110に1を加えると、 11111111になる。 これが、 00000001 のマイナスの数、つまりマイナス1である。
ステップ | 操作内容 | 結果(8ビット) | 説明 |
---|---|---|---|
① | 元の数(正の数) | 00000001 | これは「+1」を表す2進数である。 |
② | ビットを反転する | 11111110 | 0→1、1→0 に反転します。これで「1の補数」になる。 |
③ | 反転した数に1を加える | 11111111 | 11111110 + 1 = 11111111。これが「2の補数」である。 |
④ | 結果の意味 | −1 | 2の補数表現では、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 | これは負の数(マイナスの値)を表している。 |
② | ビットを反転する | 00000011 | 0→1、1→0 に反転する。これで「1の補数」になる。 |
③ | 反転した数に 1 を加える | 00000100 | 00000011 + 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年版
コメント