Light C | ← → 目次 索引 |
Light C では小数を IEEE (Institute of Electrical and Electronic Engineers) の浮動小数点数形式で表します。この形式は世界で広く使用されている標準です。
IEEE 浮動小数点数は、符号部、指数部、仮数部の 3 つの部分から構成されます。符号部は数値の正負を表し、2<指数>×<仮数> が数値の絶対値を表します。
例外として、浮動小数点数の値が 0.0 の場合は、符号部、指数部、仮数部のすべてのビットが 0 になります。また、IEEE の仕様では正負の無限大や非数 (NaN) を表す形式も定義されていますが、Light C はこれらを使用しないため、説明も省略します。
主な IEEE 浮動小数点数として、4 バイト、8 バイト、10 バイトの形式を示します。C 言語の float は 4 バイト、double は 8 バイトの形式になります。また、Light C の浮動小数点数演算ライブラリの内部では、10 バイト形式を使って演算が行われます。
4 バイト | 8 バイト | 10 バイト | |
---|---|---|---|
総計ビット数 | 32 | 64 | 80 |
符号ビット数 | 1 (31) | 1 (63) | 1 (79) |
指数ビット数 | 8 (30〜23) | 11 (62〜52) | 15 (78〜64) |
仮数ビット数 | 23 (22〜0) | 52 (51〜0) | 64 (63〜0) |
バイアス | 0x7F | 0x3FF | 0x3FFF |
※( ) 内の数値はビット範囲
絶対値の計算方法を示します。
種類 | 絶対値 |
---|---|
4 バイト形式 | (2<指数部> - 0x7F) × (1 + <仮数部> / 0x80,0000) |
8 バイト形式 | (2<指数部> - 0x3FF) × (1 + <仮数部> / 0x10,0000,0000,0000) |
10 バイト形式 | (2<指数部> - 0x3FFF) × (<仮数部> / 0x8000,0000,0000,0000) |
Light C でのいくつかの例を示します。
数値 | 4 バイト形式 | 8 バイト形式 |
---|---|---|
0.0 | 0x00000000 | 0x0000000000000000 |
1.0 | 0x3F800000 | 0x3FF0000000000000 |
-1.0 | 0xBF800000 | 0xBFF0000000000000 |
2.0 | 0x40000000 | 0x4000000000000000 |
3.14 | 0x4048F5C3 | 0x40091EB851EB851F |
10 | 0x41200000 | 0x4024000000000000 |
100 | 0x42C80000 | 0x4059000000000000 |
1000 | 0x447A0000 | 0x408F400000000000 |
Copyright © Tama Software Ltd, 1999-2012. | ← → 目次 索引 |