一文搞懂补码、反码和原码

本文深入浅出地探讨了原码、反码和补码的概念,通过实例解析它们在计算机中表示正负数的方式。强调了补码的重要性,因为它能确保算术运算的正确性。文章通过127+1的例子,展示了补码如何解决计算过程中的问题,得出127+1=-128的结论,帮助读者巩固理解。
摘要由CSDN通过智能技术生成

程序是怎样跑起来的第二章

原码、补码、反码搞得我头疼,每次记住了,又忘记了,反复如此…经过深入的研究,这下真的彻底记住了。

先看下面的几个小问题,回头再来解决:

  1. 二进制11111111等于多少(十进制)

  2. 127+1=?

原码和反码最为简单:原码就是十进制转化为二进制,反码就是0变为1,1变为0。比如十进制1的原码:00000001,反码:11111110。

怎么区别正负数呢?正数的最高位是0,负数的最高位是1。秉持这个原则来计算1-1=?

What!!!竟然不为0!!!由此看出,这种方案虽然简单,但是不能得到正确得结果。

所以聪明的程序员设想出了补码。因为1+?=0,那么?等于多少呢

这就容易多了,?=11111111,即-1=11111111,这种形式就叫做补码,那么负数的补码怎么求呢?有啥规律嘛?

负数的补码=绝对值的二进制先取反,再加一比如-2的绝对值是2,二进制为00000010,取反11111101再加1为11111110(补码)。

再回头看前边提出的问题11111111转化为十进制为?最高位为1,所以这个数是负数,11111111(负数)+???(正数)=0可以得???=00000001(十进制为1),那么-1.

127+1=?如下图所示127和1的二进制表示分别为:01111111、00000001,相加得到结果为10000000(最高位是1,故为负数,按照负数(补码)的规律倒推回去即可),或者可以按照10000000(负数)+???(整数)=0来求得???,即为负数的绝对值128。

所以127+1=-128。

觉得有帮助的话,点个赞呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值