单精度的浮点数N有32位,S占1位,E占8位,M占23位。
双精度浮点数N共64位,S占1位,E占11位,M占52位。
计算公式如下:
s是符号位的值,正数为0,负数为1。
e=E-127(遇上进制不同可以转换成十进制然后在计算(下一篇准备写一下进制转换))
m=1.M。
根据IEEE的规定:当E的二进制位不全为0,也不全为1时,其尾数m必须是上述1.M的形式,这是浮点数的规格表示。
并且在进行两个数的加减运算时需要判断符号:
x0,y0分别为两个相加数的符号位,z0为运算结果的符号位,则溢出条件为:
V=x0y0(x0y0的非)z0+x0y0z0(z0的非)
若V=1则溢出,反之则无溢出。(溢出是指两个正数相加的结果为负数或者两个负数相加的结果是正数)
当进行浮点数的加减运算时有五个步骤:
- 对阶(小阶对大阶 ΔE=Ex-Ey,若ΔE=0则无需对阶)
- 尾数运算
- 结果规格化
- 舍入处理(常用就近舍入)
- 溢出判断
例题:
x=1 10001010 11001010100000000000000
y=0 10101000 10101101100000000000000
则x+y,并给出结果的IEEE754标准存储格式。
可知x的s=1 e=128+8+2-127=11 m=1.10001010
x=-1.1001010*2^11
同理可算的y的值,进而推出x+y的值。