一、移位运算
1.逻辑移位规则
分逻辑左移、逻辑右移,移出的空位都用0来补。 逻辑左移:低位添 0,高位移丢 ;逻辑右移:高位添 0,低位移丢。
2 .算数移位规则
分无符号位数、有符号数的移位。无符号数: 等同于逻辑移位 ;
有符号数:符号位不动
二、补码加减法
理论基础:任意两数的补码之和等于该两数之和的补码。
注:负数用补码表示,减法运算就可以化为加法来做。这样,运算器里只需要一个加法器就可以了,不必再配减法器,从而简化了计算机的设计。
例1:设 A = 0.1011,B = – 0.0101,求 [A + B]补
例2:设 A = –9,B = –5,求 [A+B]补
A的补码表示:10111;B的补码表示:11011
例3:设机器数字长为 8 位(含 1 位符号位) 且 A = 15, B = 24,用补码求 A – B
A=15=00001111
B=24=00011100
注:连同符号位一起相加,符号位产生的进位自然丢掉。
三、溢出概念与检测方法
1.溢出定义
在运算过程中如出现大于字长绝对值的现象,称为“溢出”。
例1:设 A = 11,B = 7,求 A+B
两个正数相加的结果成为负数,这显然是错误的。
例2:设 A = - 11,B = - 7,求 A+B
两个负数相加的结果为正数,这同样是错误的。
总结:之所以发生错误,是因为运算结果产生了溢出。两个正数相加,结果大于机器字长所能表示的最大正数,称为正溢。两个负数相加,结果小于机器所能表示的最小负数,称为负溢。
2.溢出判断
2.1一位符号位判断(硬件判断)
(1).利用硬件实现溢出判断。
(2)参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出。
即:最高有效位的进位 ⊕ 符号位的进位 = 1 说明溢出
有溢出 无溢出
简单示意图:
2.2双符号位判断(变形补码)
(1)结果的双符号位相同,未溢出;结果的双符号位不同,溢出 。
(2)最高符号位代表其真正的符号。
例1:设 A = 11,B = 7,求 A+B
双符号位“01”不同,判溢出!最高符号位“0”,代表结果为正。
例2:设 A = - 11,B = - 7,求 A+B
双符号位“10”不同,判溢出!最高符号位“1”,代表结果为负。