补码-加法与减法运算

基本的规则: 
①加法: 

整数: [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]补

扫描二维码关注公众号,回复: 3335869 查看本文章

过程:

从第一位开始加,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

猜你喜欢

转载自blog.csdn.net/qq_40416052/article/details/82746348