计算机中的浮点数 - 二进制和十进制之间转换
flyfish
一个是整数,一个是浮点数
整数转换
例子:将整数 13 转换为二进制
- 将十进制数转换为二进制:
- 13 除以 2,商为 6,余数为 1
- 6 除以 2,商为 3,余数为 0
- 3 除以 2,商为 1,余数为 1
- 1 除以 2,商为 0,余数为 1
将余数从下到上排列,即可得到二进制数:
13 = 1101 (二进制)
- 将二进制数转换为十进制:
- 从右到左,第 0 位是 1,值为 1 × 2 0 = 1 1 \times 2^0 = 1 1×20=1
- 第 1 位是 0,值为 0 × 2 1 = 0 0 \times 2^1 = 0 0×21=0
- 第 2 位是 1,值为 1 × 2 2 = 4 1 \times 2^2 = 4 1×22=4
- 第 3 位是 1,值为
1
×
2
3
=
8
1 \times 2^3 = 8
1×23=8
将所有值相加:
1 + 0 + 4 + 8 = 13 (十进制)
浮点数转换
例子:将浮点数 0.625 转换为二进制
- 将十进制数转换为二进制:
- 0.625 乘以 2,得到 1.25,取出整数部分 1
- 0.25 乘以 2,得到 0.5,取出整数部分 0
- 0.5 乘以 2,得到 1.0,取出整数部分 1
将整数部分从上到下排列,即可得到二进制数:
0.625 = 0.101 (二进制)
- 将二进制数转换为十进制:
- 从右到左,第 -1 位是 1,值为 1 × 2 − 1 = 0.5 1 \times 2^{-1} = 0.5 1×2−1=0.5
- 第 -2 位是 0,值为 0 × 2 − 2 = 0 0 \times 2^{-2} = 0 0×2−2=0
- 第 -3 位是 1,值为
1
×
2
−
3
=
0.125
1 \times 2^{-3} = 0.125
1×2−3=0.125
将所有值相加:
0.5 + 0 + 0.125 = 0.625 (十进制)
在二进制(或任何进制)表示中,小数点左边的位数表示正指数(权重增加),而小数点右边的位数表示负指数(权重减少)。 在二进制小数转换为十进制的过程中,“第 -1 位”表示的是小数点后第一位的权重。
在二进制表示中,小数点后的每一位的权重是2的负指数。例如:
- 小数点后的第一位(第 -1 位)的权重是 2 − 1 2^{-1} 2−1(即 0.5)。
- 小数点后的第二位(第 -2 位)的权重是 2 − 2 2^{-2} 2−2(即 0.25)。
- 小数点后的第三位(第 -3 位)的权重是 2 − 3 2^{-3} 2−3(即 0.125)。