在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子目录一、对阶二、规格化1、规格化的判断2、如何进行规格化(1)左归(2)右归三、舍入(1)0舍1入法(2)置1法四、溢出判断浮点数的加减法运算步骤:对阶,使得两数的阶数位置对齐 尾数求和,将

目录

一、对阶

二、规格化

1、规格化的判断

2、如何进行规格化

(1)左归

(2)右归

三、舍入

(1)0舍1入法

(2)置1法

四、溢出判断


浮点数的加减法运算步骤:

  1. 对阶,使得两数的阶数位置对齐
  2. 尾数求和,将对阶后的尾数按定点加减运算规则求和/差
  3. 规格化,将求和/差后的尾数进行规格化
  4. 舍入,为提高精度,要考虑尾数右移时丢失的数值位
  5. 溢出判断,即判断结果是否溢出

一、对阶

类比平常我们用到的带阶数的加减法,我们常常会把两个数的阶数转化为一致,再针对尾数进行加减法运算,计算机中也是一样。

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

对以上两个浮点数,我们进行对阶,首先求他们的阶差

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在对阶的过程中有两种方式,大阶向小阶看齐,小阶向大阶看齐。

但是在计算机中,因为存储空间的字长限制,如果我们使用大阶向小阶看齐,需要把数字向左移,可能把数字的最高位给移除掉,从而使整个数据出现错误;

如果我们使用小阶向大阶看齐,需要把数字向右移,有可能丢失数据的精度,但不会使整个数据出现错误;

因此我们对阶的原则是

小阶向大阶看齐

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子,求 X + Y

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

二、规格化

1、规格化的判断

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

判断一个数是否是规格化数,计算机中可以通过亦或电路,比较一个数补码的符号位跟第一位数是否相同来实现。

例如:在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

例如:S = -1

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

2、如何进行规格化

详细规格化操作请参照我的另一篇文章:计算机组成原理12-数的定点表示和浮点表示

规格化分为左归和右归

(1)左归

尾数左移一位(大小变为原来的两倍),阶码减
1
,直到数符和第一数位不同为止
 
在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子,计算 X + Y的结果为:
[
x
+
y
]

= 00, 11; 11. 1001 ,
 
结果为非规格化数,左归后
 
在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

(2)右归


尾数溢出

>1
)时,需
右规,
即尾数出现 01. ××…×或
10. ××…×时,
尾数右移一位,阶码加 1
 

总结:

①两个符号位不相同,右规:两个符号位不同,说明运算结果溢出。此时要进行右规,即把运算结果的尾数右移一位。

需要右规的只有如下两种情况:01××××和10××××。01×××右移一位的结果为001×××;10××××右移一位的结果为110×××。最后将阶码(指数)+1。

②两个符号位相同,但是最高数值位与符号位相同,左规:两个符号位相同,说明没有溢出。此时要把尾数连续左移,直到最高数值位与符号位的数值不同为止。

需要左规的有如下两种情况:111×××和000×××。111×××左移一位的结果为11×××0;000×××左移一位的结果为00×××0。最后将阶码(指数)减去移动的次数。

例如:在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

通过双符号位,我们可以知道尾数相加后,尾数溢出,因此我们需要进行右归

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

三、舍入

执行右规或者对阶时,有可能会在尾数低位上增加一些值,最后需要把它们移掉。(进行尾数加减时不要把对阶过程在尾数低位上增加的值去掉,不是不去掉,而是在舍入这一步去掉。)比如说,原来参与运算的两个数(加数和被加数)算上符号位一共有6个数,通过一系列操作后运算结果变成了8个数,这时需要把第7和8位的数去掉。如果直接去掉,会使精度受影响,通常有下边两个方法:

(1)0舍1入法

比如:X = 00.11010111,假设原本加数和被加数算上符号位一共有6个数,结果X是10个数,那么要去掉后四个数(0111)。由于0111首位是0(即要去掉的数的最高位为0),这种情况下,直接去掉这四个数就可以。所以最后结果为 X = 00.1101
结果 X = 00.11001001,这时要去掉的数为1001四个数,由于这四个数的首位为1(即要去掉的数的最高位为1),这种情况下,直接去掉这四个数,再在去掉这四个数的新尾数的末尾加1。如果+1后又出现了溢出,继续进行右规操作。所以最后结果为 X = 00.1101。

(2)置1法

这个比较简单,去掉多余的尾数,然后保证去掉这四个数的新尾数的最后一位为1(即是1不用管,是0改成1)即可。比如 Z=00.11000111,置1法之后的结果为Z=00.11001。

例:在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

四、溢出判断

阶码溢出在规格化和右移的过程中都有可能发生,

若阶码不溢出,加减运算正常结束(即判断浮点数是否溢出,不需要判断尾数是否溢出,直接判断阶码是否溢出即可)。

若阶码下溢,置运算结果为机器0(通常阶码和尾数全置0)。

若上溢,置溢出标致。

例如:

设机器数为补码,尾数为
规格化形式,
并假
设阶符取
2
位,阶码的数值部分取
7
位,数符取
2
位,尾数取
n
位,则该
补码
在数轴上的表示为
 

在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子

今天的文章在计算机中实现浮点数加减运算,一般需要哪几个步骤?_浮点数举个例子分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84642.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注