计算机组成原理——加法运算和移位运算

一、加法运算

补码加减法公式:
	加法:
		整数: [a]+ [b]= [a + b]补(mod 2^(n + 1))
		小数:[a]+ [b]= [a + b](mod 2)
	减法:
		整数:[a - b]= [a + (-b)]= [a]+ [-b](mod 2 ^ (n + 1))
		小数:[a - b]= [a + (-b)]= [a]+ [-b](mod 2)
补码加减法规则:
	1、参加运算的两个操作数都用补码来表示
	2、符号位作为数的一部分参加运算
	3、若做加法,则两书直接相加;若做减法,则将减数变补后再与被减数相加
	4、运算结果仍用补码表示
	5、符号位的进位为模值,应该去掉
1、上述加法公式为符号位仅有一位时的公式,当符号位有进位时 mod 2 ^ (n + 1) 
	或者 2 来丢掉产生的进位
2、[-b]补 等于 b 的补码除了最后一个1,其余连同符号位一同取反
补码的溢出判断:
	1、单符号位法:
		若操作数的两个符号位分别为 x/y,得到结果的符号位为s,则
			溢出 = x & y & s非  |  x非 & y非 & s
	2、进位判断法:
		设最高数值位的进位信号为 x, 符号位的进位信号为 y, 则
			溢出 = x非 & y  |  x & y非 = x 异或 y
	3、双符号位判断法:
		设置两个符号位 x 和 y, 则
			溢出 = x 异或 y
1、补码运算溢出的情况:
	1)正数 + 正数 最后得到 负数
	2)负数 + 负数 最后得到 正数
	单符号位法只是将这两种情况翻译成了二进制的符号位的运算
2、对于进位判断法,其实也是 1 中两种情况的另外一种翻译
	当符号位没有进位而最高数值位有进位的时候,只有一种情况,例如
		0,1001 和 0,1001
	当符号位有进位而最高数值为没有进位的时候,也只有一种情况,例如
		1,1001 和 1,0001
3、当采用双符号位的时候,两个符号位相同代表没有溢出,当两个符号位不同的时
	候,就代表发生了溢出,此时符号位的较高一位为数的符号,而较低一位为数产
	生的进位。

二、移位运算

移位运算可以实现二进制数的扩大(左移)与缩小(右移),当其与加减法配合的时候,可以实现乘法与除法。
算术移位规则(符号位保持不变):
	正数的源码、补码、反码移位:补0
	负数:
		源码:补0
		反码:补1
		补码:左移补0,右移补1
逻辑移位规则(无符号数的移位):
	高位、低位需要补位的时候均补0
1、移码规则总结起来就是当要添加的位置表示真值的时候补0,表示真值的反的时候补1
算术移位中丢掉1的各种情况:
	
|数值表示  |左移  |右移
|真值为正  |出错  |丢失精度
|负数的源码|出错  |丢失精度
|负数的补码|无影响|丢失精度
|负数的反码|无影响|无影响
1、因为高位表示的权值较大,丢失时会对结果产生致命性的影响,而低位表示的
   权值较小,所以丢失时产生的结果可能会有精度的影响,就如
   		100000001
   	如果左边的 1 丢掉,则结果会产生错误,而右边的 1 丢掉,结果会与正确结果
   	有较小的差异,但大体上看来还是正确的。
 2、当对应的位数值为 1 表示真值时,丢掉会对数值产生影响,但是当对应的位数
    表示真值的反的时候,丢掉1就相当于丢掉真值的 0 ,对结果无影响
 3、移位会使得数值扩大或者减小,上述讨论的是移位后的结果与人脑计算结果的
    差别,例如
    	100 右移一位变成 10,得到二进制的 2,而人脑计算时 4 / 2 = 2,得到
    十进制的 2,二进制的 10 和 十进制的 2 相等,这是右移丢 0 无影响的
    含义,其他以此类推。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值