浮点数的计算

对于浮点数的计算,首先可以看加减操作。浮点数的加减法分为5个操作:对阶 尾数加减 规格化  舍入 判溢出五个步骤:

1)对阶  将两个科学记数法表示的数 的阶数对齐。

   例如:9.85211*10^12 + 9.66007*10^10     (这里写的是十进制数)

对于这种加法,阶数小的数向阶数大的数靠拢。这样做的好处是方便处理尾数。

2)尾数相加减    加减法

3)规格化  规格化指的是让尾数的首位有效(不是0),将尾数控制在0.01~1内

4)舍入  根据题目要求,有时候可能需要舍去几位尾数。常见做法是四舍五入,或者直接暴力抹除并进1.

5)判溢出  因为阶码不能超过表示上限。

 

------

例题:十进制数x=- 5/256   y=+59/1024   按照补码规则计算X-Y

(在此处规定浮点数标准为:阶符2位,阶码3位,数符取2位,尾数取9位  阶码和尾数都使用补码表示)

 

解答:  X 从十进制转换为二进制,5->101    5/256-->101/2 那么-5/256--->-101/28--> -0.101*2-101

       Y:59-->111011   1/1024--->2-10    那么Y=59/1024--->0.111011* 2-100

将X和Y转换为补码形式:

  X:-101-->11101(原码)-->11011(补码)

  Y:-100--->11011(原码)-->11100(补码)     0.111011--->00 111011000(原码、补码)

   所以,X用补码表示是11011 11 011000000   Y用补码表示是11100 00 111011000    前面5位是阶符和阶码,中间2位是数符,后9位是尾数。

 

  在完成数码转换后,进行浮点数的加减法:

  1) 对阶:小阶对大阶

     求阶差: 11011+00100=11111  x和y的阶数相差为1    为了小阶对大阶,修改X的阶码。

     对齐:X的原码形式阶符+阶码是11101,加1以后变成11110,再取补码得11010。再将尾数右移一位,尾数变成了-0.0101,再转补码就是11 101100000.补码变成了11100 11 101100000

    -Y的补码是11100 11 000101000

   X-Y的补码=X的补码+-Y的补码,X+(-Y)= 11100 10 110001000

  注意:数符部分出现了10 ,说明计算过程中出现了进位溢出,稍后处理

 

  3)规格化:11100 10 110001000(补码)--->-1.001111*2-100 --->-0.1001111*2-011   对应的机器码变化是11100 10 110001000(补码)---> 11101 11 011000100(补码)

  4)舍入   这道题没有要求舍去,所以不用处理

  5)判溢出   无最大最小溢出,无需处理

  

   

posted @ 2021-05-19 21:02  namezhyp  阅读(2025)  评论(0编辑  收藏  举报