计算机中的原码反码和补码

首先明确两点

1.正数或者说无符号数的原码、反码、补码都是一样的

2.计算机对数值的存储中,对于负数,是以补码的形式进行存储的

 

ok,接下来在好好研究下原码、反码、补码以及有符号、无符号。

而且,下面的只是针对有符号数!

 

有符号数的反码就是其绝对值的原码数值位取反,比如 -1;

-1首先取绝对值为1,二进制表示为 0000 0001;而因为是负数,所以符号位变为1;

ok,接下来,数值位取反,则变成了 1111 1110;那么,这个表示形式就是-1的反码。

那么,补码呢?补码就是在反码的基础上加1,即1111 1111。因此,char a=-1这个值

在内存中的二进制形式就是 1111 1111。用例子说明:

可以看到,打印出来的十六进制的数值是ff,这就说明了有符号中的负数在计算机中是以补码形式存在的。

 

那么,为什么会有补码这种存在的形式呢?

1.为了编码统一。

如果只有原码和反码,那么0就会有两种存在方式。分别为 0000 0000 和 1000 0000 ,这明显会造成混乱的;

而有了补码,这两个值有分别代表了0和-128,这样保证了唯一性。

2.便于加法运算。

所为补码,即为互补。可以想象一个时钟现在是12点,如果你想走到1点,那么你既可以前进1,也可以后退11,这样会方便。

而计算机中的补码存在大抵也有此类的考虑。

当然还有其它的优点,这里不详细的去考证了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值