【基本情報技術者を目指す皆様へ】
・今回は2進数の固定小数点と浮動小数点について教えます!
・実際にPythonで計算を行い、疑問の解決につなげます。
本記事のテーマ
説明
コンピュータの数を表す方法は2つあります。
1. 固定小数点
2. 浮動小数点
コンピュータの中では、固定小数点で整数を表し、浮動小数点で実数(少数を含む数)を表します。
1. 固定小数点
固定小数点はビット列の「どの位置に小数点があるか」が決まっている表現です。
8ビットの固定小数点で表せる範囲はこのようになります。
浮動小数点
浮動小数点は次の指数表記を用いて数値を扱う表現方法です。
コンピュータで扱うのは2進数なので、こうなります。
これで小数点の位置を覚えておく必要がなくなります。
コンピュータは浮動小数点として、残りの可変部分(符号、仮数、指数)の値をビットに割り当てて、数を表現します。
32ビット形式
S: 仮数部の符号(0:正、1:負)
E: 指数部(2を奇数とし、負の数は2の補数で表現)
M: 仮数部(2進数 絶対値表示)
S(1ビット)、E(7ビット)、M(24ビット)
例を用いて説明します。
例:0.1875
①まずは0.1875を2進数に直す。
②算出した2進数を0.M形式に正規化する。
③正規化した数から、符号(S)と仮数(M)、指数(E)を抜き出す
④最後に指定された形式通りに値をはめ込むと出来上がり
IEEE754の形式例
ここでは、IEEE(米国電子電気技術者協会)により企画化された、IEEE754という浮動小数点数の形式を32ビットで紹介します。
先ほどの32ビットとは、ビット数の内訳や指数部の表し方、正規化の方法が異なります。
S: 仮数部の符号(0:正、1:負)
E: 指数部(2を奇数として+127する バイアス127)
M: 仮数部(仮数−1の2進数小数で表す 1.xxxx1の小数部)
S(1ビット)、E(8ビット)、M(23ビット)
実際に計算していきます。
①0.1875を2進数にすると0.0011。これを1.Mの形に正規化します。
②正規化した数から、符号(S)と仮数(M)、指数(E)の値を抜き出す。
③最後に、指定された形式通り書く値をはめ込むと出来上がり
以上で固定小数点と浮動小数点の説明は終了です!
特に浮動小数点は表現方法が複数ありますので一つ一つ覚えましょう!
参考資料
・キタミ式イラストIT塾 基本情報技術者 平成31/01年