プログラミング言語

コンピュータ内部での数値表現 / 22

26 コメント
views
0 フォロー
22
とくに 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

通報 ...