ちょっとディープな生物の世界

基本情報技術者入門:補数表現・固定小数点表示・浮動小数点表示

補数とは

1と0だけを使う2進数ではマイナスを表現することができません。そのために、補数を使います。

10進数で補数を考えてみます。10進数では9の補数と、10の補数があります。9の補数とは、足すと桁が上がらないで最大値となるような数です。10の補数とは、足すと桁が上がる調度の数です。

例えば、256の9の補数は、256+X=999と考えられるので、X=743となります。256に743を足すと、桁が上がらずに最大値(999)となります。

256の10の補数は、256+X=1000なので、X=744となります。足すと桁があがる(1000になる)調度の数です。

10進数だけに限らず、N進数にはN-1の補数と、Nの補数があります。

10進数の補数でマイナスを表現する

コンピュータにおける補数はマイナスを表現するときに使われます。10進数で考えてみると、256の10の補数は744です。256+744=1000ですが、コンピュータでは3桁同士の足し算なので、和の4桁目を無視して000のみを見ます。このような和が000となる値をコンピュータではマイナスとして認識します。つまり-256は744としての意味を持ちます。

2進数でも、1の補数2の補数があります。1010の1の補数は101です。また、1010の2の補数は110となります。1の補数はビットを反転することで得られ、また1の補数に1を足した値が2の補数になります。

固定小数点表示

コンピュータにおける数値の表現方法には、固定小数点表示浮動小数点表示があります。固定小数点表示では、特定の位置に少数点があることが約束されています。小数点が最下位ビットのすぐ右にあり、最上位ビットに符号ビットが置かれている時は、整数を表現することができます。

例えば、10進数の127は1111111ですが、最上位ビットに符号がつくため(0が+、1が-)、01111111と表現します。

10進数の-127は、01111111の2の補数ですので、0000001となりますが、符号をつけて10000001となります。

浮動小数点表示

浮動小数点表示は指数を使い、大きな数や小さな数を表現する方法です。Yという実数を指数で表現すると、Y=M×B^Eとなります。このMを仮数、Eを指数部、Bを基数と呼びます。そして、仮数と指数部をどの値にするかを決めることを正規化と呼びます。

例えば、0.0000111111111×10^10という情報があり、記録領域の関係上、0.00001までしか表現できなかったとします。しかし、指数部の値を違うものにすることによって、仮想部を変化させ、情報の精度を保つことができるようになります。

浮動小数点の表現形式

浮動小数点の表示の仕方にはいくつかあります。

S、E、Mの部分に分けて、表示します。Sでは仮数部の符号(0:正、1:負)、Eでは指数部(2を基数として、負数は2の補数で表現)、Mは仮数部(2進数、絶対値表示)です。例えば10進数7.25を表示してみます。

7.25は2進数にすると、111.01です。仮数部が0.Mとなるように正規化すると、0.11101×2^3となります。指数は3となります。つまり、S、E、Mの順に並べてみると次のようになります。

000000111110100…00

Sは1ビット、Eは7ビット、Mは24ビットであり、Mは最上位桁から順に左から埋め、残りは0を入れます。

負数の表現:バイアス値

負数を表現する際には、バイアス値を加える場合があります。バイアス127では、実際の値に127を加えます。そうすることで、-127は-127+127=0となり、2進数は0と表すことができます。127は127+127=254で11111110と表現できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です