「規格 - 浮動小数点数」の版間の差分

12行目: 12行目:
例えば、0.1を浮動小数点数で表すと、0.1<sub>(10)</sub> = 0.000110011001100110011...<sub>(2)</sub>と無限に続くが、コンピュータ内部では有限桁で丸められるため、<br>
例えば、0.1を浮動小数点数で表すと、0.1<sub>(10)</sub> = 0.000110011001100110011...<sub>(2)</sub>と無限に続くが、コンピュータ内部では有限桁で丸められるため、<br>
真値ではなく、近似値で表現することになる。<br>
真値ではなく、近似値で表現することになる。<br>
<br><br>
== IEEE 754 ===
==== 例: 10進数をIEEE754形式にする ====
以下の例では、<math>9.875_{(10)}</math> をIEEE754形式の浮動小数点に変換している。<br>
<br>
# 10進数を2進数に基数変換する
#: まず、<math>9.875</math> を2進数に基数変換する。
#: 整数部分の <math>9_{(10)}</math> は、2進数で <math>1001_{(2)}</math>、小数部分の <math>0.875_{(10)}</math> は2進数で <math>0.111_{(2)}</math> となる。
#: この2つ合わせると、<math>9.875_{(10)}</math> は <math>1001.111_{(2)}</math> となる。
#: <br>
# 2進数を指数表記にする。(正規化)
#: <math>1001.111_{(2)}</math> を指数表記にする。
#: 指数表記では、仮数が10未満の小数を含む数にする。
#: つまり、<math>1.M</math> という形に正規化する。
#: これを、ケチ表現と呼ぶ。
#: <br>
#: したがって、仮数を <math>2^{3}</math> した <math>1.001111 \times 2^{3}</math> という形になる。
#: <br>
# 浮動小数点数のビットに格納する
#: 指数表記から浮動小数点数に格納する数に変換する。
#: <br>
#:* 仮数部
#:*: <math>1.001111 \times 2^{3}</math> は正であるため、IEEE754形式の仮数部は <math>0</math> となる。
#:* 指数部
#:*: <math>1.001111 \times 2^{3}</math> の指数は <math>3_{(10)}</math> であるため、(8ビットの)2進数にすると <math>00000011</math> となる。
#:*: さらに、指数に <math>01111111_{(2)} \, \, = 127_{(10)}</math> を加算すると、<math>10000010</math> となる。
#:* 仮数部
#:*: 上記で求めた仮数 <math>1.001111</math> の小数点以下の数 <math>001111</math> を仮数部の先頭から格納する。
#:*: <math>001111</math> 以降の数は <math>0</math> でパディングする。
#: <br>
# 変換完了
#: これにより、<math>9.875_{(10)}</math> をIEEE754形式の32ビットの浮動小数点数にした値は <math>01000001000111100000000000000000_{(2)}</math> となる。
<br><br>
<br><br>