binToDouble関数

本ページには広告が含まれています。

バイナリ形式(2進数)の文字列を倍精度浮動小数点数に変換します。

構文
  1. Double = binToDouble( bin )
引数
bin 必須
2進数の値
戻り値
倍精度浮動小数点数に変換した値

プログラム

UWSC

倍精度浮動小数点数/Double

範囲(正の値)
\(4.94065645841247 \times 10^{-324} ~ 1.79769313486232 \times 10^{308}\)
範囲(負の値)
\(-1.79769313486232 \times 10^{308} ~ -4.94065645841247 \times 10^{-324}\)
\[(-1)^{\mathrm{sign}} \times 2^{\mathrm{exponent} - \mathrm{exponent}\ \ \mathrm{bias}} \times 1.\mathrm{mantissa}\]
  1. \(\mathrm{sign}:符号\)
  2. \(\mathrm{exponent}:指数部\)
  3. \(\mathrm{exponent}  \mathrm{bias}:指数部バイアス\)
  4. \(\mathrm{mantissa}:仮数部\)
符号
1ビット
指数部(ゲタ履き表現)
11ビット(-1022~1023)
仮数部
52ビット
有効桁数
\(\log_{10} 2^{52} = 52\log_{10} 2 = 52 * 0.301029957 = 15.653\)

指数部の符号化方式

倍精度浮動小数点数の指数部はオフセット(ゲタ履き)表現を使って符号化されており、指数値が0のときオフセット値(バイアス値)は1023である。

  1. \(E_{min}=01_{H}-3FF_{H}=-1022\)
  2. \(E_{max}=7FE_{H}-3FF_{H}=1024\)
  3. \(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} \]

使い方

引数に指定されたバイナリ形式の文字列を倍精度浮動小数点数に変換します。

UWSC
結果
プレーンテキスト