DOUBLE BOGEY

かけだしITエンジニアの苦悩と歓喜をつづります

基本情報技術者試験【2日目】補数表現と固定小数点表示

主にやること

*補数の理解

*補数の計算

*補数の活用

補数

補数…負の数を表現する方法

補数とは、その名の通り「補う数」。ある数を決められた数にするために補う数ということ。

10進数で考えてみる。

10進数には9の補数と10の補数がある。

例えば、10進数3桁において123の9の補数は876、10の補数は877になる。

*123の9の補数

1→9にするには8

2→9にするには7

3→9にするには6

*123の10の補数

繰り上がりを考慮しながら計算すると…

1→10にするには8

2→10にするには7

3→10にするには7

上記のように、桁一つ一つに着目してある数にするための数を計算することにより補数を導くことができる。

一般化して考える

一般にN進数には「N-1の補数」と「Nの補数」がある。

このとき、ある数に「N-1の補数」を補うとある数の桁数の最大値となる。

また、ある数に「Nの補数」を補うと次の桁に繰り上がる。

補数に着目する

10進数877の補数→123

ここで、10進数3桁について考えると877+123の4桁目は無視される。 つまり、補数表現において

877 + 123 = 000 であるから

877 = -123

このように、補数を使えば負数を表現することができる。

2進数で考える

2進数も同じイメージで、1の補数と2の補数がある。

例えば2進数4ビットの数0101について考えると

*0101の1の補数 1→0

0→1

1→0

0→1

つまり、0101の1の補数は1010

*0101の2の補数

繰り上がりを考慮しながら計算すると…

1→1

0→1

1→0

0→1

つまり、0101の2の補数は1011

このとき、

2進数の1の補数はビットを反転させたもの

2進数の2の補数は1の補数に1を加えたもの

となることがわかる。

2の補数に着目する

2進数4ビットについて考えるとき、5ビット目は無視される。

つまり、補数表現において

0101 + 1011 = 0000

1011 = -0101

多くのコンピュータでは、演算回路を簡単にするため、2の補数を使って負数を表現することにより 減算を加算で処理している。

固定小数点表示

コンピュータ内部での数値表現方法には固定小数点表示と浮動小数点表示がある。

固定小数点表示…一連のビット列の特定の位置に小数点があることが約束されている。

最上位ビットを符号を表すビット、小数点位置が最下位ビットのすぐ右にあるとすれば、整数を表現できる。