将十进制数+13/128写成二进制浮点数和浮点数
时间: 2024-01-07 14:06:05 浏览: 187
10进制浮点数转换为2进制
4星 · 用户满意度95%
首先,将十进制数+13/128转换为二进制数:
0.10110101
接下来,将其转换为浮点数规格化表示。以单精度浮点数(32位)为例,其规格化表示通常为:1位符号位 + 8位指数位 + 23位尾数位。其中,指数位使用偏移量表示法,即用真实指数值加上一个偏移量来表示指数,偏移量为127。尾数位的最高位一定为1,因此可以省略掉这个1,获得更高的精度。
因为0.10110101是小于1的数,所以可以通过不断乘2并取整数部分的方式将其转换为规格化表示。具体步骤如下:
- 乘2,得到1.0110101,记录指数位为-1。
- 去掉整数部分的1,得到0.0110101。
- 乘2,得到1.10101,记录指数位为-2。
- 去掉整数部分的1,得到0.10101。
- 乘2,得到1.0101,记录指数位为-3。
- 去掉整数部分的1,得到0.0101。
- 乘2,得到1.101,记录指数位为-4。
- 去掉整数部分的1,得到0.101。
- 乘2,得到1.010,记录指数位为-5。
- 去掉整数部分的1,得到0.010。
- 乘2,得到1.100,记录指数位为-6。
- 去掉整数部分的1,得到0.100。
- 乘2,得到1.000,记录指数位为-7。
- 去掉整数部分的1,得到0.000。
- 尾数位补0,直到长度为23位,得到10101100000000000000000。
因为小数部分的长度为7位,需要在指数位中加上偏移量127,并将指数位转换为8位的二进制数。偏移量加上-7等于120,转换为二进制数为01111000。
综上所述,将十进制数+13/128写成二进制浮点数为0 01111000 10101100000000000000000,对应的十六进制表示为0x3D580000,对应的十进制表示为0.828125。
阅读全文