浮点运算
计算机内无论整数还是浮点数都是以二进制存储的;浮点数由三部分组成:符号位s,阶码e,尾数m;
一:预备:
值 存储位 指数偏移量
real*4 1位符号位(s)\8位指数(e) 23位尾数(m,共32位) 127(7FH)
real*8 1位符号位(s)\11位指数(e) 52位尾数(m,共64位) 1023(3FFH)
real*10 1位符号位(s)\15位指数(e) 64位尾数(m,共80位) 16383(3FFFH)
二:计算公式:
V=(-1)^s*2^E*M
当e(各位)为全'0'时,E=1-(2^(e(位数)-1)-1);M=m;
如:real*4是8位,E=1-(2^(8-1)-1)=1-127=-126
即:
在real*4时:
V=(-1)^s*2^(-126)*m
在real*8时:
V=(-1)^s*2^(-1022)*m
当e(各位)不为全'0'且不为全'1'时,E=e(值)-(2^(e(位数)-1)-1);M=1+m
即:
在real*4时:
V=(-1)^s*2^(e(值)-127)*(1+m)
在real*8时:
V=(-1)^s*2^(e(值)-1023)*(1+m)
三:将浮点格式转换为十进制数
[例3.1]:
0x00280000(real*4)
转换为二进制:
0000 0000 0010 1000 0000 0000 0000 0000
0 000 0000 0 010 1000 0000 0000 0000 0000
一个符号位 8位指数位 23位尾数位
E=-126 m=0. 010 1000 0000 0000 0000 0000=0.3125
该浮点数的十进制数为:
V=(-1)^s*2^(-126)*m
V=(-1)^0*2^(-126)*0.3125=1*2^(-126)*0.3125=3.6734198463196484624023016788195e-39
四:将十进制数转换成浮点格式(real*4)
十进制数:26.0
二进制数:11010.0
规格化二进制数:
11010.0/1.10100=10000=2^4,因此:
1.10100*2^4
计算指数:
4+127=131
符号位 指数位 尾数部分
0 100 0001 1 101 0000 0000 0000 0000 0000
为:0x41D0 0000
0.75
二进制为:
0.11
规格化二进制:
1.1*2^-1
计算指数:
-1+127=126
0 01111110 10000000000000000000000
以单精度(real*4)浮点格式存储该数
0011 1111 0100 0000 0000 0000 0000 0000
0x3F40 0000
2.5
十进制-2.5转换成二进制
-10.1
规格化二进制数
-1.01*2^1
计算指数
1+127=128
符号位 指数部分 尾数部分
1 10000000 01000000000000000000000
以单精度(real*4)浮点格式存储该数
1100 0000 0010 0000 0000 0000 0000 0000
0xC020 0000