计算机中的源码,反码和补码

本文探讨了二进制数的不同表示方式及其对运算的影响。通过对比原码和补码下的加法运算,揭示了为何计算机采用补码进行运算的原因。文章还详细解释了如何通过补码计算负数的相反数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己学习的总结

众所周知 1+(-1)=0 这个等式一定成立,但若把这两位数都用二进制数来表示并计算,

00000001(1) + 10000001(-1) = 10000010 (-2) 

我们得到的结果并不正确,因为第一个等式一定成立所以必定是转化成二进制计算中出现错误。我们先不急着探究为什么第二个等式是错误的,我们先讨论一个等式  1 + x = 0 ,可得 x= -1 ,将等式转化为二进制表示

00000001 + x = 00000000 

由此可得 x= 11111111, 我们发现此时的 x 刚好为 -1 的补码形式, 我们发现当 -1 以补码形式计算时等式才能成立,以源码形式计算时不能成立。 这就是计算机要以补码的形式存储的原因了。 原码是为了二进制换算,补码是为了二进制运算。

这是我们发现要使等式

10000000 + x = 00000000 成立,x = 10000000 , 故我们把10000000 这个数认为是 -128。

我们有上面得到的等式 1 + x = 0 可以得到 -1 的补码,所以我们得到 

       00000000 - 某个正的二进制数 = 这个数相反数的补码 

-》(11111111 + 00000001)-某个正的二进制数 = 这个数相反数的补码 


https://www.zhihu.com/question/20159860/answer/390141912  这里有关于 原码 反码 补码 的另一种解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值