原码、反码、补码和Int整数的表示法

文章详细介绍了计算机中整数的表示方式,包括原码、反码和补码的概念。对于正数,原码、反码和补码相同,而负数则遵循特定的转换规则。补码的设计使得二进制运算更加高效,尤其是在加法运算中,如5+(-5)=0,在补码系统下能得到正确结果0。
摘要由CSDN通过智能技术生成

在这里插入图片描述

整数表示法

int整数的表示分成了两个部分

符号位 - 数值位
1000 0000 0000 0001

整数的第一位如果是1,那么这个整数就是负数,如果是0,则是正数
后面的所有位,存储的都是该数的补码

原码

将一个整数转换成二进制形式,就是其原码。例如short a = 6;
a 的原码就是

0000 0000 0000 0110

更改 a 的值a = -18;
此时 a 的原码就是,注意第一位是符号位

1000 0000 0001 0010

通俗的理解**,原码就是一个整数本来的二进制形式**。

反码

对于正数,它的反码就是其原码(原码和反码相同)
负数的反码是将原码中除符号位以外的所有位取反
例如short a = 6;
a 的原码和反码都是

0000 0000 0000 0110

更改 a 的值a = -18;
此时 a 的反码是

1111 1111 1110 1101

补码

对于正数,它的补码就是其原码(原码、反码、补码都相同);
负数的补码是其反码加 1。
例如short a = 6;
a 的原码、反码、补码都是

0000 0000 0000 0110

更改 a 的值a = -18,此时 a 的补码是

1111 1111 1110 1110

可以认为,补码是在反码的基础上打了一个补丁,进行了一下修正,所以叫“补码”。
总结:正数的原码、反码、补码完全一样,只有负数需要按照以上规则计算。

为什么用补码进行运算

5 + (-5) = 0
那么…5的某种码加(-5)的某种码,会不会恰好是0的某种码呢?
如果真的是,计算机中有上亿次计算,计算效率会大大提高,过程会极大的简化。

原码和的十进制结果是 -10,结果是错的,因为符号位没法直接相加

反码和是 11111111,对应十进制 -0 ,大家觉得-0还是0?
这样我们就有两种0,虽然不对,结果已经非常接近了!!
但是…每个二进制和十进制都是数的表示形式,是一一对应的。
01111111是不是也可以表示0,两种形式都表示0,那么是不是某个数不能被表示了

补码和000000000,刚好是0,补码在加法器运算上具有独到的优势,不得不慨叹这个设计的精妙绝伦.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YUE ZHEN PENG

码字不易,如果你想请我喝杯果汁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值