C语言复习:原反补码

本文介绍了二进制原反补码的概念,重点讨论了它们在C语言中的作用,尤其是如何处理正负数的加减运算。原码直接表示数的符号,反码用于正数和负数加法,但负数相加可能产生错误。补码通过加1修正负数相加的异常,同时解决正负零的问题,确保二进制运算的正确性。
摘要由CSDN通过智能技术生成

这篇博客是对于我个人的知识的复习,当然如果有某位大佬能够指出这里面有哪些概念含糊不清或者难懂,麻烦指出来感激不尽。

原反补码

放出链接原返补码深入探究
在大学的C语言课堂上,可能就接触到了原反补码的概念,大学老师说,正数的原反补码就它本身,负数的反码就是符号位不变,其他数值取反,补码则是反码+1.
但是为什么,我从大一开始就有这个疑惑,为什么正数就不用变,负数则要这么复杂?
直到我拜读了刀斧手何在大大的博客才解开了我的迷惑豁然开朗。

原码

正码反码补码的存在是为了解决二进制数字中存在符号位情况下的减法运算。
正数和正数的加法,负数和负数的加法使用原码问题不大,只要把符号位变正确就足够了,但是正数和负数相加会产生错误,因此有了反码的产生。

反码的产生

用反码来进行加减运算会发现,正数相加和正负数相加结果正确,而负数相加则会产生错误,不过问题不大,因为两个负数相加可以认为让两个数的绝对值相加,然后改变符号位。
上面的方法有一个小瑕疵,11110+00001 = 11111(-0),两个相反数相加的结果是-0,显得很怪异,因此有了补码

补码

补码的思想和模有关系,

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值