本ページには広告が含まれています。
単精度浮動小数点数をバイナリ形式(2進数)の文字列に変換します。
- 構文
- UString = SingleToBin( dec )
- 引数
- dec 必須
- 10進数の値
- 戻り値
- バイナリ形式(2進数)に変換した文字列
プログラム
単精度浮動小数点数/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}\]
- \(\mathrm{sign}:符号\)
- \(\mathrm{exponent}:指数部\)
- \(\mathrm{exponent} \mathrm{bias}:指数部バイアス\)
- \(\mathrm{mantissa}:仮数部\)
- \(s:符号部\)
- \(xxx:仮数部\)
- \(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である。
- \(E_{min}=01_{H}-7F_{H}=-126\)
- \(E_{max}=FE_{H}-7F_{H}=127\)
- \(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}\]- \(初項:a=1\)
- \(公比:r=0.5\)
- \(項数:n=24\)
- 指数部
- \(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} \]
使い方
引数に指定された単精度浮動小数点数の値をバイナリ形式の文字列に変換します。
- 結果
