浮点数表示法:
其中 M 为 尾数 , r 为 阶码
阶码是定点整数, 决定浮点数的范围
尾数是定点小数, 决定浮点数的精度
IEEE745 标准
如使用 32 位表示单精度(float), 第一位表示 符号位 (注意是浮点数的符号, 不是阶码的符号), 第 2~9 位表示阶码(移码表示), 剩下 23 位表示尾数(原码表示, 若阶码不是 0 , 则省略小数点左边的 1 )
阶码的偏移量是
127
规格化数
尾数由于隐藏位
1, 因此实际为24位
非规格化数
当阶码为 0, 尾数不为 0 时, 隐藏位为 0
采用 IEEE754 标准单精度浮点数格式表示
45100000H
二进制表示为0100 0101 0001 0000 0000 0000 0000 0000
第一位为0, 表示正数
阶码1000 1010其原码需要移码减去127(0111 1111)得1011(十进制11)
尾数存在隐藏1, 因此为1.001...(1.125)
因此结果为1.125×2^11
IEEE754 标准中移码的规格化, 正数为
0.1...负数为1.1...
加减法
阶数相同时, 尾数直接进行加减法
阶数不相同时
如 与 , 求
需要进行如下五步
- 对阶
已知 与
注意这里符号位都是两位的...☃️
求出阶差
说明 的阶更小, 为了让 小阶向大阶看齐 , 让 的阶加 2, 那么 的尾数就要缩小 倍, 也就是右移 2 位
通常移除的部分要保留, 称为
保留附加位, IEEE754 通常包括3位保留附加位, 分别为保护位舍入位粘位舍入位右边若没有数了, 则粘位为0
- 尾数运算
因为对阶了, 因此这里和阶数相同时运算法则一致
- 规格化
注意这里是补码得规格化
正数时尾数 00.1...
负数时尾数 11.0... (除了-0.5 , 也就是 11.10....0 )
左规: 将尾数 00.01.... 或者 11.10... 左移一位, 阶码减 1
右规: 将尾数 10.?.... 或者 01.?.... 右移一位, 阶码加 1
- 舍入
末位恒置1 规格化时尾数均加 1
0舍1入 规格化丢失的最高位是 1 则结果加 1
- 溢出处理
下溢时趋于 0 , 直接当作 0
乘法
-
阶码相加
-
尾数相乘
-
规范化舍入
除法
-
尾数调整
-
阶码求差
-
尾数相除
-
规范化舍入