浮点数N=M×rE
其中,r是浮点数阶码的底,也称为尾数的基值,通常r=2。
E(阶码部分)和M(尾数部分)都是带符号的定点数,在大多数计算机中,尾数为纯小数,常用原码或补码表示,决定了浮点数的精度;阶码为纯整数,常用移码或补码表示,决定了浮点数的表示范围。
设某浮点数的格式如下图所示,k和n分别表示 阶码和尾数的位数(不包含符号位),尾数和阶码均用补码表示。
当es=0,ms=0时,阶码和尾数的数值位全为1(即阶码和尾数都为最大正数)时,该浮点数为最大正数:
X最大正数=(1-2-n)×22^k-1
当es=1,阶码的数值位均为1;ms=0,尾数的最低位mn=1,其余各位为0(即阶码为绝对值最大的负数,尾数为最小的正数)时,该浮点数为最小正数:
X最小正数=2-n×2-2^k
当es=0,阶码的数值位均为1;ms=1,尾数的数值位全为0(即阶码为最大正数,尾数为绝对值最大的负数)时,该浮点数为绝对值最大的负数:
X绝对值最大的负数=-1×2-2^k-1。
浮点数的阶码是带符号的定点整数,在多数通用计算机中,采用移码表示,即在真值的基础上增加一个常数,此常数被偏置值。
对于字长为8位的定点整数,如果偏置值为27,则有:
真值X(十进制) | 真值X(二进制) | [X]补 | [X]移 |
-128 | -1000 0000 | 1000 0000 | 0000 0000 |
-127 | -111 1111 | 1000 0001 | 0000 0001 |
… | … | … | … |
-1 | -000 0001 | 1111 1111 | 0111 1111 |
0 | 000 0000 | 0000 0000 | 1000 0000 |
1 | 000 0001 | 0000 0001 | 1000 0001 |
… | … | … | … |
127 | 111 1111 | 0111 1111 | 1111 1111 |
① 在移码中,最高位“0”表示负数,最高位“1”表示正数,与原码、反码、补码的符号位相反;
② 移码为全“0”时,它所对应的真值最小,为全“1”时,它所对应的真值最大,因此,移码的大小直观地反映了真值的大小,有助于两个浮点数进行阶码大小比较;
③ 真值0在移码中的表示形式也是唯一的;
④ 移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小;
⑤ 同一数值的移码和补码除最高位相反外,其它各位均相同。