1.IEEE754浮点数标准
1.1标准形式
S(数符) | 阶码(含阶符) | 尾数 |
---|
1.2不同的浮点数标准
符号位S | 阶码 | 尾数 | 总位数 | |
---|---|---|---|---|
短实数 | 1 | 8 | 23 | 32 |
长实数 | 1 | 11 | 52 | 64 |
临时实数 | 1 | 15 | 64 | 80 |
2 IEEE754浮点数在计算机中的表示方法
数符:直接用原码表示
阶码:用移码表示,设阶码位数为n,则阶码偏移量为 2 n 2^n 2n - 1,即8位阶码的浮点数中的阶码应该偏移127
尾数:用原码表示,其中表示的数为规格化数,最高位,即个位1被隐藏
2.1 IEEE754浮点数表示实例(来源于唐朔飞《计算机组成原理》)
实数表示 | 数值 |
---|---|
原始十进制数 | 178.125 |
二进制数 | 10110010.001 |
二进制浮点表示 | 1.0110010001* 2 111 2^{111} 2111(规格化表示) |
符号 | 偏移的阶码 | 有效值(原码表示) | |
---|---|---|---|
短实数表示 | 0 | 00000111+01111111=10000110(偏移量为127符号位为最高位,可以通过符号位判断阶码的偏移方向,即0为反向偏移,阶码为负数;1为正向偏移,阶码为正数。) | 01100100010000000000000(由于是规格化数且基数为2,所以最高位的1被隐藏,符号位在第一位) |
在此提出一个问题,阶码用移码,和尾数用规格化原码对于数0应该如何保存。
设阶码位数为n,尾数位数为m。IEEE754标准的浮点数表示范围从- 2 n 2^n 2n* 2 − m − 1 2^{-m-1} 2−m−1到 2 n 2^n 2n* 2 m − 1 2^{m-1} 2m−1那自然能够表示0
实际上
符号 | 阶码 | 尾数 |
---|---|---|
0 | 0000 0000 | 0000 ······ 0000 |
表示数0,即阶码和尾数都为全零,这样有利于简化机器中的判0电路。
单一的阶码或者尾数为零不能判断浮点数为零
例
用IEEE754表示的C800 0000H的真值为
C800 0000H=1100 ······ 0000
IEEE854表示为
符号 | 阶码 | 尾数 |
---|---|---|
1 | 1001 0000 | 0000 ······ 0000 |
尾数为原码,考虑规格化,容易知道
尾数=1
阶码为移码,偏移量为127,阶符为1即为正向偏移,容易算出
阶码=1001 0000 - 0111 111=0001 0001=17
即C800 0000H=1*- 2 17 2^{17} 217=- 2 17 2^{17} 217