IEEE754标准是一个广泛采用的浮点数表示格式,旨在为浮点数的存储和处理提供一种统一的方法,以促进软件的移植性。该标准在1985年由IEEE推出,规定了基于2的基数,以及使用移码表示的阶码E和原码表示的尾数M。规格化的原码确保了最高位总是1,从而无需实际存储即可表示一个额外的有效数字。
IEEE754标准定义了三种浮点数格式:
1. 短实数:使用8位存储,其中1位为符号位,8位为阶码(偏移量为23),23位为尾数。
2. 长实数:使用11位存储,符号位1位,阶码11位(偏移量为1023),52位为尾数。
3. 临时实数:使用15位存储,符号位1位,阶码15位(偏移量为16383),64位为尾数。
对于阶码为0或255的特殊情况,IEEE754标准有专门的定义。在固定总位数的情况下,浮点数的精度和范围是相互制约的,因此大多数计算机系统都支持单精度(32位)和双精度(64位)两种格式。
单精度浮点数的表示范围如下:
- 最大正数:01111110 00000000000000000000000(十进制约为3.4028235E38)
- 最小正数:00000000 0000000000000000000001(十进制约为1.40129846E-45)
- 最大负数:10000000 11111111111111111111111(十进制约为-3.4028235E38)
- 最小负数:11111111 1111111111111111111111(十进制约为-1.40129846E-45)
在IEEE754标准中,浮点数的存储格式在尾数中隐含了一个1,因此在计算时需要额外加上这个整数1。阶码E的存储形式与通常的128偏移量不同,它基于127的偏移量,因此在计算时需要特别注意符号位的影响。
例如,将数值-0.5按照IEEE754单精度格式存储,首先转换为二进制标准形式:-0.5 = -1.0 x 2^-1。符号位s为1,M为全0,E为-1(126),存储形式为:1 01111110 00000000000000000000000(十六进制为BE00000016)。这里,不同的下标表示不同的进制。