补码-加法与减法运算

基本的规则: 
①加法: 

整数: [A]补 + [B]补 = [A+B]补 (mod 2^(n+1)) 
小数: [A]补 + [B]补 = [A+B]补 (mod 2)

②减法: 

整数: [A-B]补 = [A]补 + [-B]补 (mod 2^(n+1)) 
小数: [A-B]补 = [A]补 + [-B]补(mod 2)

注:

整数的补码是它本身;
[-B]补的求法就是 [B]补的连同符号位在内,每位取反,末位加一。

Example1:相加 -8到+3(机器数字长为8位)

 (+3)    0  0  0  0 0  0  1 1

+(8)   1  1  1  1 1  0  0  0
----------------------------------
 (
5)    1  1   1 1 1  0  1  1

 

Example2:相加 -5到-2(机器数字长为8位)

 (2)       1  1  1  1 1  1  1  0
+(5)      1  1  1  1 1  0  1  1
-------------------------------------
 (-7)
1 1  1  1  1  1  0  0  1   (按的意义,最左边的1丢掉)

 

Example3:已知A = -1001,B = -0101,求[A + B]补

过程:

从第一位开始加,1 + 1 = 10(满2进10);

第二位:1+1+1 = 11;

第三位:1 +1 + 0 = 10;

第四位:1 +0 + 1 = 10;

第五位:1 +1 + 1 = 11;

第六位:1,去掉。

4位二进制补码数的数字圆:

可以通过围绕数字圆圈移动来添加或减去数字

  • 顺时针添加
  • 逆时针减法(添加负数)

 

Example4:求1,0100011 - 1,1010011 

  1,  0  1  0  0  0  1 1 

- 0,  0  1  0  1  1  0 1 

=0,  1  1  1  0  1  1  0

过程:

从第一位开始减,1-1 = 0;

第二位:1-0 = 1;

第三位:0-1 = 1,且第四位有1的负债(不看存款); 
第四位:存款是0,负债是1,那么自己就是-1啊,减不动1,于是借来2,先还负债,剩下1,再减1 = 0; 
第五位:也负债1,借来1,减的是0所以还剩1; 
第六位:本来是1,被第五位借走了,所以只剩0了,减不动1,所以向第七位借来2,减去1还剩1; 
第七位:本身是0,被第六位借走了1,所以是-1,要减0,先借来2,还债后剩1,减0还是1 
第八位:本身是1,被借走了,好嘛,那就 剩0了,刚好需要减的也是0,不要再往上借了。当然,需要借的时候也行,那个超出                 八位以后的东西,从虚空中拿来,不用还!

Reference :

  https://blog.csdn.net/u011240016/article/details/52433355

  • 27
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值