SingleToBin関数

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

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

構文
  1. UString = SingleToBin( dec )
引数
dec 必須
10進数の値
戻り値
バイナリ形式(2進数)に変換した文字列

プログラム

UWSC

単精度浮動小数点数/Single

正の値
\({1.1754944 \times 10^{-38}}_{(10)}\) ~ \({3.40282339717 \times 10^{38}}_{(10)}\)
負の値
\({-3.40282339717 \times 10^{38}}_{(10)}\) ~ \({-1.1754944 \times 10^{-38}}_{(10)}\)
\[(-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)^{\mathrm{s}}\times1.xxxxxxxxxxxxxxxxxxxxxxx\times{2^{yyyyyyyy}}_{(2)}\]
  1. \(s:符号部\)
  2. \(xxx:仮数部\)
  3. \(yyy:指数部\)
符号ビット
1ビット
指数部の幅
8ビット(ゲタ履き表現)
仮数部の幅
23ビット
有効桁数
\(\log_{10} 2^{23} = 23\log_{10} 2 = 23 * 0.301029957 = 6.923\)

符号ビットは表現する数値の符号(正負)を示します。指数部は8ビットで、符号なし整数として見た場合は0~255の値をとり、0のときは0か非正規化数であることを、1~254のときは-127のゲタ履き(バイアス付き)表現で-126~127の指数を、255のときは無限大またはNaNであることを示します。

指数部が0(0および非正規化数)の場合を除き、仮数部で表現されるビットパターンのさらにひとつ上の桁に暗黙の1のビットがあるとみなす表現法(ケチ表現)により、正規化された数の精度は、24ビットである。十進に換算したときに表現できる桁数は\(\log_{10} 2^{24} \approx 7.225\)桁となります。

指数部の符号化方式

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

  1. \(E_{min}=01_{H}-7F_{H}=-126\)
  2. \(E_{max}=FE_{H}-7F_{H}=127\)
  3. \(exponent\ \ bias(指数バイアス)={7F}_{H}=127\)

\(00_{H}\)と\(FF_{H}\)は予約された指数値です。

正の最小値(単精度)

単精度浮動小数点数 正の最小値
符号
\((-1)^{0}\)
仮数部
\(xxx = 000~0000~0000~0000~0000~0000\)
\(1.xxx=1.00000000000000000000000_{(2)}={2^{0}}_{(10)}=1.0_{(10)}\)
指数部
\(yyy = 0000~0001_{(2)}=1_{(10)}\)
\({2^{1-127}}_{(10)}={2^{-126}}_{(10)}\)=\({\frac{1}{2^{126}}}_{(10)}\)=\({1.1754944\times10^{-38}}_{(10)}\)
符号×仮数部×指数部
\[ \begin{eqnarray} value_{min}&=&(-1)^{0} \times 1 \times \frac{1}{2^{126}}\\ &=&1.175494351 \times 10^{-38} \end{eqnarray} \]

正の最大値(単精度)

単精度浮動小数点数 正の最大値
符号
\((-1)^{0}\)
仮数部
\(xxx = 111~1111~1111~1111~1111~1111_{(2)}\)
\(1.xxx=1.11111111111111111111111\)
\[2^{0},2^{-1},2^{-2},…,2^{-23}\]
  1. \(初項:a=1\)
  2. \(公比:r=0.5\)
  3. \(項数:n=24\)
\(S=\frac{a(1-r^{n})}{1-r}=\frac{1-0.5^{24}}{1-0.5}=\frac{1-0.5^{24}}{0.5}={1.99999988079}_{(10)}\)
指数部
\(yyy = 1111~1110_{(2)}=254\)
\({2^{254-127}}_{(10)} = {2^{127}}_{(10)}={1.7014118\times10^{38}}_{(10)}\)
符号×仮数部×指数部
\[ \begin{eqnarray} value_{max}&=&(-1)^{0} \times \frac{1-0.5^{24}}{0.5} \times 2^{127} \\ &=&3.4028235 \times 10^{38} \end{eqnarray} \]

負の最小値(単精度)

単精度浮動小数点数 負の最小値
符号
\((-1)^{1}\)
仮数部
\(xxx = 111~1111~1111~1111~1111~1111_{(2)}\)
\(1.xxx=1.11111111111111111111111_{(2)}\)
\(S=\frac{a(a-r^{n})}{1-r}=\frac{1-0.5^{24}}{1-0.5}=\frac{1-0.5^{24}}{0.5}=1.99999988079_{(10)}\)
指数部
\(yyy = 1111~1110_{(2)}=254\)
\({2^{254-127}}_{(10)}={2^{127}}_{(10)}=1.7014118 \times {10^{38}}_{(10)}\)
符号×仮数部×指数部
\[ \begin{eqnarray} value_{min}&=&(-1)^{1} \times \frac{1-0.5^{24}}{0.5} \times 2^{127}\\ &=&-3.4028235 \times 10^{38} \end{eqnarray} \]

負の最大値(単精度)

単精度浮動小数点数 負の最大値
符号
\((-1)^{1}\)
仮数部
\(xxx = 000~0000~0000~0000~0000~0000_{(2)}\)
\(1.xxx=1.00000000000000000000000_{(2)}\)
\({2^{0}}_{(10)}=1.0_{(10)}\)
指数部
\(yyy = 0000~0001_{(2)}\)
\({2^{1-127}}_{(10)}={2^{-126}}_{(10)}\)=\({\frac{1}{2^{126}}}_{(10)}\)=\({1.1754944\times10^{-38}}_{(10)}\)
符号×仮数部×指数部
\[ \begin{eqnarray} value_{max}&=&(-1)^{1} \times 1.0 \times \frac{1}{2^{126}} \\ &=&-1.175494351 \times 10^{-38} \end{eqnarray} \]

使い方

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

UWSC
結果
プレーンテキスト