计算机组成原理15 | 您所在的位置:网站首页 › stm8浮点运算溢出 › 计算机组成原理15 |
目录 一、对阶 二、规格化 1、规格化的判断 2、如何进行规格化 (1)左归 (2)右归 三、舍入 (1)0舍1入法 (2)置1法 四、溢出判断 浮点数的加减法运算步骤: 对阶,使得两数的阶数位置对齐尾数求和,将对阶后的尾数按定点加减运算规则求和/差规格化,将求和/差后的尾数进行规格化舍入,为提高精度,要考虑尾数右移时丢失的数值位溢出判断,即判断结果是否溢出 一、对阶类比平常我们用到的带阶数的加减法,我们常常会把两个数的阶数转化为一致,再针对尾数进行加减法运算,计算机中也是一样。 对以上两个浮点数,我们进行对阶,首先求他们的阶差 在对阶的过程中有两种方式,大阶向小阶看齐,小阶向大阶看齐。 但是在计算机中,因为存储空间的字长限制,如果我们使用大阶向小阶看齐,需要把数字向左移,可能把数字的最高位给移除掉,从而使整个数据出现错误; 如果我们使用小阶向大阶看齐,需要把数字向右移,有可能丢失数据的精度,但不会使整个数据出现错误; 因此我们对阶的原则是 小阶向大阶看齐
判断一个数是否是规格化数,计算机中可以通过亦或电路,比较一个数补码的符号位跟第一位数是否相同来实现。 例如: 例如:S = -1 详细规格化操作请参照我的另一篇文章:计算机组成原理12-数的定点表示和浮点表示 规格化分为左归和右归 (1)左归 尾数左移一位(大小变为原来的两倍),阶码减 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 位,则该 补码 在数轴上的表示为 |
CopyRight 2018-2019 实验室设备网 版权所有 |