単精度バイナリ形式から十進への変換
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/11 22:00 UTC 版)
「単精度浮動小数点数」の記事における「単精度バイナリ形式から十進への変換」の解説
16進の値 41c80000 を例として変換を行う。これを二進で表すと次のようになる。 41c8 000016 = 0100 0001 1100 1000 0000 0000 0000 00002 これを、符号ビット、指数部、仮数部の3つに分割する。 符号ビット: 0指数部: 1000 00112 = 8316 = 131仮数部: 100 1000 0000 0000 0000 00002 = 48000016 ここで仮数部に暗黙の整数ビットを加える。 仮数: 1100 1000 0000 0000 0000 00002 = C8000016 指数部の値から127を引いて実際の指数値を得る。 指数部の値: 8316 = 131本来の指数: 131 − 127 = 4 24ビットの仮数は最上位ビットが1に対応し、次の桁が0.5、その次が0.25というように、前の桁の1/2に対応している。 bit 23 = 1bit 22 = 0.5bit 21 = 0.25bit 20 = 0.125bit 19 = 0.0625..bit 0 = 0.00000011920928955078125 この例では、仮数で立っているビットは bit 23、bit 22、bit 19 の3ビットだけであり、上記の対応する値を加算することで十進での仮数が得られる。 本来の仮数: 1 + 0.5 + 0.0625 = 1.5625 = C80000/223 基数 2 を指数値でべき乗したものを仮数にかけると本来の値が得られる。 1.5625 × 24 = 25 従って 41c8 0000 = 25 となる。これは次の式と等価である。 n = ( − 1 ) s × ( m 2 − 23 ) × 2 x − 127 {\displaystyle n=(-1)^{s}\times (m2^{-23})\times 2^{x-127}} ここで s {\displaystyle s} は符号ビット、 x {\displaystyle x} は指数部、 m {\displaystyle m} は仮数を基数10で表したものである。
※この「単精度バイナリ形式から十進への変換」の解説は、「単精度浮動小数点数」の解説の一部です。
「単精度バイナリ形式から十進への変換」を含む「単精度浮動小数点数」の記事については、「単精度浮動小数点数」の概要を参照ください。
- 単精度バイナリ形式から十進への変換のページへのリンク