一般的浮点数表示
一般的浮点数是由E和M这两个定点数拼接起来的表示的,(定点数的小数点要么在最后一位数后面,要么在符号位后面)。E表示阶码,M表示尾数。当底数为2时,真值就是2E×M。
其中,1/r(r是底数)<=|M|< =1
规格化
左规:
若尾数最数值高位不是有效位,以原码为例,若最高数值位是0,则将尾数算术左移一位,阶码减一(基数为2的情况,如果基数为4,则如果最高前两位没有1,则算术左移2位,阶码减一)
右规:
如果浮点数运算尾数发生溢出,则右规一位,阶码加1;
(基数为2时)
IEEE754标准
IEEE754标准常见的有短浮点数,长浮点数,临时浮点数
类型 | 数符 | 阶码 | 尾数数值 | 总位数 | 偏置值 |
---|---|---|---|---|---|
短浮点数 | 1 | 8 | 23 | 32 | 127 |
长浮点数 | 1 | 11 | 52 | 64 | 1023 |
临时浮点数 | 1 | 15 | 64 | 80 | 16383 |
拿短浮点数举例
阶码为8位,正常表示范围为[1,254],尾数23位,用原码表示,隐藏了1在小数点左边(因为原码规格化小数点最高位恒为1)
真值为 (-1)s×1.M×2E-127.
当阶码全为1时,如果M=0,则为无穷大(符号看s)如果M!=0,则为NaN
当阶码全为0时,如果M=0,则真值=0,否则为非规格化,真值=(-1)s×0.M×2-126
运算
运算过程中,规格化后阶码超出表示范围才算溢出,因此计算时尾数溢出不一定溢出