とくに
0c52de9dbe
2020/07/16 (木) 19:55:05
二進数では十進数で表現できる小数でも無限小数になることがある。
例えば0.1などは二進数にすると無限小数になる。
0.1 - 0.5 = -0.4 → 0
0.1 - 0.25 = -0.15 → 0
0.1 - 0.125 = -0.025 → 0
0.1 - 0.0625 = 0.0375 → 1
0.0375 - 0.03125 = 0.00625 → 1
0.00625 - 0.015625 = -0.009375 → 0
0.00625 - 0.0078125 = -0.0015625 → 0
0.00625 - 0.00390625 = 0.00234375 → 1
以下、無限に続く。
0.00011001100...
これを単精度で表す。
1.1001100... * 2-4
指数部は
-4 + 127 = 123
二進数に変換
01111011
符号は0
00111101110011001100110011001100...
このままでは入りきらないので値を丸める必要がある。
IEEE754では丸め方が様々あるが、デフォルトでは最近接偶数丸めと言うものである。
0は切り捨て、1は切り上げる。
00111101110011001100110011001100 | 1
↓
00111101110011001100110011001101
通報 ...