15行目: 15行目:


== IEEE 754形式 ==
== IEEE 754形式 ==
==== 例: 10進数をIEEE754形式にする ====
==== 例: IEEE754形式への変換 ====
===== 例: 9.875<sub>(10)</sub> =====
以下の例では、<math>9.875_{(10)}</math> をIEEE754形式の浮動小数点に変換している。<br>
以下の例では、<math>9.875_{(10)}</math> をIEEE754形式の浮動小数点に変換している。<br>
<br>
<br>
34行目: 35行目:
#: 指数表記から浮動小数点数に格納する数に変換する。
#: 指数表記から浮動小数点数に格納する数に変換する。
#: <br>
#: <br>
#:* 仮数部
#:* 符号部
#:*: <math>1.001111 \times 2^{3}</math> は正であるため、IEEE754形式の仮数部は <math>0</math> となる。
#:*: <math>1.001111 \times 2^{3}</math> は正であるため、IEEE754形式の仮数部は <math>0</math> となる。
#:* 指数部
#:* 指数部
45行目: 46行目:
# 変換完了
# 変換完了
#: これにより、<math>9.875_{(10)}</math> をIEEE754形式の32ビットの浮動小数点数にした値は <math>01000001000111100000000000000000_{(2)}</math> となる。
#: これにより、<math>9.875_{(10)}</math> をIEEE754形式の32ビットの浮動小数点数にした値は <math>01000001000111100000000000000000_{(2)}</math> となる。
<br>
===== 例: 0.3125<sub>(10)</sub> =====
以下の例では、<math>0.3125_{(10)}</math> をIEEE754形式の浮動小数点に変換している。<br>
<br>
# 10進数を2進数に基数変換する
#: まず、<math>0.3125</math> を2進数に基数変換する。
#: 整数部分は <math>0</math>、小数部分の <math>0.3125_{(10)}</math> は2進数で <math>0.0101_{(2)}</math> となる。
#: この2つ合わせると、<math>0.3125_{(10)}</math> は <math>0.0101_{(2)}</math> となる。
#: <br>
# 2進数を指数表記にする。(正規化)
#: <math>0.0101_{(2)}</math> を指数表記にする。
#: 指数表記では、仮数が10未満の小数を含む数にする。
#: つまり、<math>1.M</math> という形に正規化する。 (ケチ表現)
#: <br>
#: したがって、仮数を <math>2^{-2}</math> した <math>1.101 \times 2^{-2}</math> という形になる。
#: <br>
# 浮動小数点数のビットに格納する
#: 指数表記から浮動小数点数に格納する数に変換する。
#: <br>
#:* 符号部
#:*: <math>1.101 \times 2^{-2}</math> は正であるため、IEEE754形式の仮数部は <math>0</math> となる。
#:* 指数部
#:*: <math>1.101 \times 2^{-2}</math> の指数は <math>-2_{(10)}</math> であるため、(8ビットの)2進数にすると <math>11111110_{(2)}</math> となる。
#:*: この <math>11111110_{(2)} \, \, = -2_{(10)}</math> に <math>01111111_{(2)} \, \, = 127_{(10)}</math> を加算すると、<math>01111101_{(2)} \, \, = 125_{(10)}</math> となる。
#:* 仮数部
#:*: 上記で求めた仮数 <math>1.101</math> の小数点以下の数 <math>101</math> を仮数部の先頭から格納する。
#:*: <math>101</math> 以降の数は <math>0</math> でパディングする。
#: <br>
# 変換完了
#: これにより、<math>0.3125_{(10)}</math> をIEEE754形式の32ビットの浮動小数点数にした値は <math>00111110110100000000000000000000_{(2)}</math> となる。
<br><br>
<br><br>