定点数的位移方式和溢出判断

您所在的位置:网站首页 定点数运算过程中如果发生溢出应 定点数的位移方式和溢出判断

定点数的位移方式和溢出判断

2023-09-15 14:26| 来源: 网络整理| 查看: 265

定点数:

参考链接:

  https://blog.csdn.net/limanjihe/article/details/52440544

漫谈计算机组成原理(九)定点数及定点数的运算 - 云+社区 - 腾讯云 (tencent.com)

定点数的位移运算

移位运算的规则:

虽然正数和负数的移位运算规则不相同,但是相同之处在于移位后正数和负数的符号不变。

那么规则就变成了移位运算时,符号位不动,数值位按照如下规则进行移位。

 

 

无符号整数

溢出情况:(有且仅有正溢出)超出最大表达范围即溢出

例:8位机器数 表达范围:0-255  如果计算的结果超过了这个范围,则会出现溢出现象,最高位无法表达,导致和比其中一个加数小。

 

带符号整数

溢出情况:

如何判断有符号数是否发生溢出现象:1、两个正数相加得到一个负数,则说明发生了正溢出2、两个负数相加得到一个正数,则说明发生了负溢出

正溢出: 两正数的数值部分相加产生进位到符号位,导致最终的得到的数是负数,导致出现错误 例:127 + 1 = 128 机器数表示 :0111,1111 + 0000,0001 = 1000,0000 负溢出: 例:-128 + -1 = -129 机器数表示 1000,0000 + 1111,1111 = 1,0111,1111(第一位舍去无法表示)

 

 

溢出判断方法:(溢出只可能两个正数相加或者两个负数相加)

(1)用一位符号位判断溢出:判断结果的符号位是否与两个操作数的符号位相同,如果不同,则发生溢出

(2)利用数据编码的最高位(符号位)和次高位(数值部分的最高位)的进位状况来判断运算结果是否发生了溢出:

如果进位情况是00,则无溢出; 如果进位情况是为01,则发生溢出; 如果进位情况是为10,则发生溢出; 如果进位情况是为11,则无溢出

(3)采用双符号位补码进行判断:

正常时两个符号位的值相同,在运算结果中当两个符号位不同时则表明发生了溢出。

运算结果的符号位为01表明两个正数相加,结果大于机器所能表示的最大正数,称为上溢;

运算结果的符号位为10表明两个负数相加,结果小于机器所能表示的最小负数,称为下溢。

也就是说,两个正数相加,数值位不应向符号位同时产生进位,使得结果数的符号位和操作数的一样,为00

注意,双符号位数的加法,符号位也要参与进位运算(这样才能达到上溢和下溢的效果)

例子: (-10)+(-7)=(-17) 用机器数表示为 11 0110 + 11 1001 = 10 1111 发生溢出 3 + 2 = 5 用机器数表示为00 0011 + 00 0010 = 00 0101

 

 

补充:  双符号位数移位规则:  区别于单符号位数的符号位不动,数值位按规则移动

正数补码移位:

数符不变,空位补零(右移时第二符号位移至尾数最高位)

例如:00.1101左移一位是01.1010,右移一位是00.0110; 01.1101左移一位是01.1010,右移一位是00.1110;

负数补码移位:

规则是左移空位补零,右移空位补一。

例如:11.1101左移一位是11.1010,右移一位是11.1110; 10.1101左移一位是11.1010,右移一位是11.0110

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3