天天看点

计算机组成与原理运算器篇之浮点数的加减运算浮点数的加减运算举个栗子🐖:

浮点数的加减运算

首先在对浮点数进行加减运算时,先问一下大家是否对浮点数的表示方法是否已经清楚了呢?

浮点数表示方法:

    这里我举个栗子,例13/128;

    二进制表示方法:0.0001101000;

那么如果用浮点数规格化怎么表示?且让我慢慢与你细说(●'◡'●)!

浮点数规格化表示包含

    1.阶符(就是阶码的正负,例如2^1,则阶码就是1,阶码为正数所以阶符为0);

    2.阶码(1*2^2阶码就是2);

    3.尾数(0.1011*2^1,其中小数点后面的1011就是尾数);

    4.数符(0.1011*2^1,就是这个数是正数还是负数,若是负数则数符就是1,正数就是0);

好了,有了以上的概念,那么一个0.0001101000;

浮点数规格化为:1 11;0.11011000;//阶符阶码;数符尾数;这是表示的顺序,从左到右;

好了,终于可以进入正题了,现在开始进行的浮点数的加减运算; 

举个栗子🐖:

 已知俩浮点数 x=0.1101*2^10, y=0.1011*2^01,求x+y?

 步骤:

先进行对阶,x-y,计算机里面没有减法所以需要进行补码操作,

        即x的阶码的补码00 10;-y的阶码为11 11;

        规格化 x=00 10;0.1101; y=0010;0.1011;

        两者阶码相加观察阶符变化

          00 10

        +11 11

------------------------------------------------------------------------------------------------

          00 01

        x-y是一个正数,所以y要向x对阶有0001知,需要尾数向右移动,移动

        一位,并且y的阶码需要+1,y=0010;0.01011;

然后尾数求和,0.1101

                      + 0.01011

------------------------------------------------------------------------------------------------

                         1.00101

这里出现了1.0……,需要注重的是,如果出现了01.0.……或者10.0……这种的说明了一个问题,

那就是溢出了,此时需要将尾数右移一位,而此时阶码则要+1;阶码变化为0011;

所以(x+y)补=00 11;0.100101;

       (x+y)补=0.100101*2^11;

需要注意:

         如果尾数得到的结果出现01.0.……或者10.0……,需要进行右规即向右移动一位;阶码+1;切记!

         如果尾数得到的结果出现00.0.……或者11.1……,需要进行左规向左移动一位;阶码-1;切记!