基礎理論~浮動小数点数~
2進数での小数
小数って、10進数だと「1.24」のようなものですね、当たり前です。
さて、2進数だと?という話です。
固定小数点
例えば2進数の「101.01」(10進数でいう5.25)を8ビットの固定小数点数で表現するときに、4桁目の後を小数点の場所と決めると、次のようになります。
0101.0100
小数点の位置が固定されているため、固定小数点数といいます。
ですが、これはあまり出題しません。
浮動小数点
これが本題。
IEEE754
これは知っておきたい IEEE 。IEEEは、標準化機構。ITのみならず、様々な事柄を標準化する機構です。
このIEEEは、決まりごとに番号がつきますが、その中で、浮動小数点数に関する規定を IEEE754 といいます。
表現方法
IEEE754では、小数を32bitで表されます。
左から1bit、8bit、23bitと分割されます。
符号部 | 指数部 | 仮数部 |
---|---|---|
1bit | 8bit | 23bit |
別名:S | 別名:E | 別名:M |
符号部
プラスの小数なら0、マイナスの小数なら1です。
指数部
これは、正規化を行います。正規化については以下説明します。
0.375(10進数) -> 0.011(2進数) -> 0.11 * 2^-1 (正規化)
小数点以下を1から始まるようにすることを正規化といいます。具体的には、累乗で位置を調整するんです。
IEEE754では、この指数(今回の場合 -1 )に 127を足します。->126
この127をバイアス値と言います。バイアス値を足した8bitを指数部とします。
よって、「01111110」が指数部です。
仮数部
0.375(10進数) -> 0.011(2進数) -> 0.11 * 2^-1 (正規化)
正規化後の 0.11 の小数点以下部分を仮数部と言います。
つまり、「11」を23bitにした「11000000000000000000000」が仮数部です。
符号部 | 指数部 | 仮数部 |
---|---|---|
1bit | 8bit | 23bit |
別名:S | 別名:E | 別名:M |
0 | 01111110 | 11000000000000000000000 |
次回
誤差について