包含负数的二进制补码的加减运算

本篇文章是我的第一篇博客,用于帮助那些和我一样处于迷茫中的朋友。如若对你有帮助的话请点个赞。如若引用还请注明出处!
读这篇文章之前,你必须对原码 反码 补码有所了解。
关于这些推荐一篇大佬的文章。
[关于原码 反码和补码](https://blog.csdn.net/chenchao2017/article/details/79733278)
在这里补充一点关于补码的知识:
a
例如:
+5的补码为0 0101
-5的补码为1 1011
如果我想用八位二进制补码表示怎么办?

答案是从右向左补充符号位!!!
那么
+5的补码就应该是0000 0101
-5的补码就应该是1111 1011
b
在进行运算时必须保证位数足够,即不发生数据溢出,否则结果错误!!!
1.整数之间的运算
例如:
(+12) +  (+8)
转换成补码形式后按位相加,符号位运算得到的值仍是符号位。若有多余位数产生则舍去多余位数。

在这里插入图片描述

在这里我采用了六位二进制数(范围-2^5~ 2^5-1)。
二进制0 10100=十进制 正20
再来个负数!(记住是各个位对应相加)
在这里插入图片描述
二进制0 00101=十进制 正5
在这里再次强调一下,多余位需要舍去,符号位经过运算得到的值依然是符号位。
2.小数间的运算
例如:
12.625+7=12+0.625+7

12+7这里就不介绍了(上面刚说过)。
0.625采用“乘二取整法”化为二进制可以得到是0.101(这里不会的直接百度,相信你!)
正19用二进制表示为 0 10011。
0 10011+0.101
即得到二进制结果为 0 10011.101 (首位0为符号位)
等于19.625

再例如:
7-0.375
0.375采用“乘二取整法”化为二进制可以得到0.011,那么-0.375就是1.011。化为补码形式为1.101(加一是在最后面加的),化为8位二进制是1 1111.101
在这里插入图片描述
即结果为1 0 0110.101(最左边1为溢出值,舍去)。
0 0110.101= +6.625
上文是我自己的拙见,可能有不当或者错误的地方。如若细心的你发现了,还请指正!

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值