在IEEE浮点数规范中,阶码用于表示浮点数的指数部分。它是一个带符号的整数,通过偏移量来表示真实的指数值。具体计算阶码的方法如下:
首先,将浮点数的指数部分转换为二进制表示形式。然后,将该二进制表示形式转换为十进制整数。
接下来,通过将该整数与一个偏移量进行相加来得到最终的阶码值。在IEEE浮点数规范中,偏移量为2^(n-1)-1,其中n是指数部分的位数。最后,根据阶码的符号确定其正负性。通过这种方式,可以计算出IEEE浮点数的阶码值。
对于阶码为0或255的情况,ieee754标准有特别的规定: 如果 e 是0 并且 m 是0,则这个数的真值为±0(正负号和数符位有关) 如果 e = 255 并且 m 是0,则这个数的真值为±∞(同样和符号位有关) 如果 e = 255 并且 m 不是0,则这不是一个数(nan)。 短浮点数和长浮点数(不含临时浮点数)的存储在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1。
对于阶码e的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将e当成二进制真值进行存储。例如:将数值-0.5按ieee754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.5(10进制)=-0.1(2进制)=-1.0×2-1(2进制,-1是指数),这里s=1,m为全0,e-127=-1,e=126(10进制)=01111110(2进制),则存储形式为: 1 01111110 000000000000000000000000=bf000000(16进制)
这里不同的下标代表不同的进制。