浮点数的二进制表示采用科学计数法,通过符号位、指数位和尾数位三个部分组合而成。具体表示方法如下:
一、表示结构
符号位(1位) 表示正负号,0代表正数,1代表负数。
指数位(整数部分)
采用偏移量表示,实际存储时需加上偏移值(如双精度浮点数的偏移量为1023,单精度为1022)。
尾数位(小数部分)
表示有效数字,采用二进制小数形式,通常为23位(单精度)或52位(双精度)。
二、转换方法
整数部分转换
将十进制整数部分按“除2取余,逆序排列”法转换为二进制整数。
小数部分转换
采用“乘2取整,顺序排列”法,将十进制小数部分转换为二进制小数。例如0.625转换为二进制为0.101(取24位有效数字)。
组合表示
- 将整数部分与小数部分合并,去掉小数点后多余的零。
- 左移小数点至第一个1的位置,记录移动位数作为指数(如0.625左移3位)。
- 最终形式为:
$$V = (-1)^{text{sign}} times a times 2^{text{exponent}}$$
其中$a$为尾数(1.Mantissa),$text{exponent}$为阶码(bias + 移动位数)。
三、示例
以十进制数2.5为例:
整数部分: 2 → 10(二进制)。 0.5 → 0.1(二进制)。 - 尾数$a = 1.1$(去掉隐含的1)。 - 指数$text{exponent} = 127 + 3 = 130$(二进制10000010)。 - 最终二进制表示为: $$1.1 times 2^{130}$$ 用二进制补码形式存储为: $$1 10000010 1001000000000000000000000_2$$ 。 四、特殊值处理 无穷大与NaN小数部分:
组合:
若尾数全为0,表示正无穷大(符号位为1);
若尾数不全为0,表示非数值(NaN)。
五、存储格式
单精度(32位):符号位1位 + 阶码8位 + 尾数23位 → 1100 0011 10010000000000000000000_2。- 双精度(64位):符号位1位 + 阶码11位 + 尾数52位 → 1001 0011 011100111100111100111100111100111100_2。
通过上述方法,浮点数可高效地用二进制表示,并支持大范围数值及特殊值运算。