本ページには広告が含まれています。
バイナリ形式(2進数)の文字列を倍精度浮動小数点数に変換します。
- 構文
- Double = binToDouble( bin )
- 引数
- bin 必須
- 2進数の値
- 戻り値
- 倍精度浮動小数点数に変換した値
プログラム
倍精度浮動小数点数/Double
- 範囲(正の値)
- \(4.94065645841247 \times 10^{-324} ~ 1.79769313486232 \times 10^{308}\)
- 範囲(負の値)
- \(-1.79769313486232 \times 10^{308} ~ -4.94065645841247 \times 10^{-324}\)
- \(\mathrm{sign}:符号\)
- \(\mathrm{exponent}:指数部\)
- \(\mathrm{exponent} \mathrm{bias}:指数部バイアス\)
- \(\mathrm{mantissa}:仮数部\)
- 符号
- 1ビット
- 指数部(ゲタ履き表現)
- 11ビット(-1022~1023)
- 仮数部
- 52ビット
- 有効桁数
- \(\log_{10} 2^{52} = 52\log_{10} 2 = 52 * 0.301029957 = 15.653\)
指数部の符号化方式
倍精度浮動小数点数の指数部はオフセット(ゲタ履き)表現を使って符号化されており、指数値が0のときオフセット値(バイアス値)は1023である。
- \(E_{min}=01_{H}-3FF_{H}=-1022\)
- \(E_{max}=7FE_{H}-3FF_{H}=1024\)
- \(exponent\ \ bias(指数バイアス)={3FF}_{H}=1023\)
\(00_{H}\)と\(FF_{H}\)は予約された指数値です。
正の最小値(倍精度)
- 符号
- \((-1)^{0}=+1\)
- 仮数部
- \(xxx=0000~0000~0000~0000~0000~0000~0000~0000~0000~0000~0000~0000~0000\)
\(1.xxx=1.0000000000000000000000000000000000000000000000000000\)
\(2^{0}\times1+2^{-1}\times0+2^{-2}\times0+2^{-3}\times0+…+2^{-52}\times0=2.0\) - 指数部
- \({2^{1-1023}}_{(10)}={2^{-1022}}_{(10)}=2.225074 \times 10^{-308}\)
- 符号×仮数部×指数部
- \[ \begin{eqnarray} value_{min}&=&(-1)^{0} \times 2.0 \times 2^{-1022} \\ &=&4.450148 \times 10^{-308} \\ \end{eqnarray} \]
正の最大値(倍精度)
- 符号
- \((-1)^{0}=+1\)
- 仮数部
- \(xxx=1111~1111~1111~1111~1111~1111~1111~1111~1111~1111~1111~1111~1111\)
\(1.xxx=1.1111111111111111111111111111111111111111111111111111\)
\[2^{0} \times 1, \quad 2^{-1} \times 1, \quad 2^{-2} \times 1, \quad 2^{-3} \times 1, \quad …, \quad 2^{-52} \times 1\] \[S=\frac{a(1-r^n)}{1-r}=\frac{1 \times (1-0.5^{53})}{1-0.5}=2.0\] - 指数部
- \({2^{2046-1023}}_{(10)}={2^{1023}}_{(10)}=8.988466\times10^{307}\)
- 符号×仮数部×指数部
- \[ \begin{eqnarray} value_{max}&=&(-1)^{0} \times 2.0 \times 2^{1023}\\ &=&1.7976932 \times 10^{308} \\ \end{eqnarray} \]
負の最小値(倍精度)
- 符号
- \((-1)^{1}=-1\)
- 仮数部
- \(xxx=1111~1111~1111~1111~1111~1111~1111~1111~1111~1111~1111~1111~1111\)
\(1.xxx=1.1111111111111111111111111111111111111111111111111111\)
\[2^{0} \times 1, \quad 2^{-1} \times 1, \quad 2^{-2} \times 1, \quad 2^{-3} \times 1, \quad …, \quad 2^{-52} \times 1\] \[S=\frac{a(1-r^n)}{1-r}=\frac{1 \times (1-0.5^{53})}{1-0.5}=2.0\] - 指数部
- \({2^{2046-1023}}_{(10)}={2^{1023}}_{(10)}=8.988466\times10^{307}\)
- 符号×仮数部×指数部
- \[ \begin{eqnarray} value_{min}&=&(-1)^{1} \times 2.0 \times 2^{1023} \\ &=&-1.7976932 \times 10^{308} \\ \end{eqnarray} \]
負の最大値(倍精度)
- 符号
- \((-1)^{1}=-1\)
- 仮数部
- \(xxx=0000~0000~0000~0000~0000~0000~0000~0000~0000~0000~0000~0000~0000\)
\(1.xxx=1.0000000000000000000000000000000000000000000000000000\)
\(2^{0} \times 1+2^{-1} \times 0+2^{-2} \times 0+2^{-3} \times 0+…+2^{-52} \times 0=2.0\) - 指数部
- \({2^{1-1023}}_{(10)}={2^{-1022}}_{(10)}=2.225074 \times 10^{-308}\)
- 符号×仮数部×指数部
- \[ \begin{eqnarray} value_{max}&=&(-1)^{1} \times 2.0 \times 2^{-1022} \\ &=&-4.450148 \times 10^{-308} \\ \end{eqnarray} \]
使い方
引数に指定されたバイナリ形式の文字列を倍精度浮動小数点数に変換します。
- 結果

