定点数的位移方式和溢出判断 |
您所在的位置:网站首页 › 定点数运算过程中如果发生溢出应 › 定点数的位移方式和溢出判断 |
定点数:
参考链接: 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 |