原码、反码和补码

原码、反码和补码之间的转换关系

正数原码,反码,补码三个都是一样的。

为什么正数补码反码原码一样?简单的说这是一种规定。因为补码和反码被设计出来就是为了表示负数的,他们被设计出来只是为了计算机更好的去计算,假如说用原码去计算两个相反数的加法,比如+1和-1相加,我们假设分配四位给计算机,那+1就是0001,-1就是1001,他们两个相加是不等于0的,而反码和补码就解决了这个问题,可以说补码和反码是原码的升级版,补码又是反码的升级版,因为反码中存在两个0一个+0和-0,补码把-0舍去了,所以能比原码和反码多表示一个负数。为什么正数补码反码原码一样,因为我们只是想要解决正负数相加的问题,所以我们其实不用去管正数,我们只要去处理负数就好了。

负数的补码是它的反码加1,负数变反码和补码的时候符号位是不变的,保持为1。

补码变原码的两种方法

  1. 10001的补码是取反后在再加1,也就是11110+1=11111;
  2. 如果是11111变回原码呢?我们可以采取逆过程先减1,11111-1=11110,再取反变为10001;(方法一)
  3. 如果要是在补码变原码时先取反再加一呢?结果为11111先取反为10000,再加1,10000+1=10001。这个结果与2是一样的,并且也是和1中的原码相吻合。(方法二)

为什么两种方法结果相同?
举例:在取反前减1和在取反后加1的效果是一样的。这就和 -(3-1) = -3+1 是一个道理。

最大正数和负数

补码表示的最大正数和负数

注意: 1.bit位全为1时表示负1(符号位是带权值的,所有位值乘以对应的权值后相加求和)
2.最小负数没有正数与之相对应。
补码表示的最大整数和负数

反码表示的最大正数和负数

在这里插入图片描述
注意:原码表示的符号位是不带权的。
与补码相比,反码除了有两个零以外,其余都是相似的。
正零:00…00
负零:11…11
最小负数:10…000,它表示 -2147483647。有原码表示的最小负数111…111按位取反(符号位不变)得来。
最大整数:01…111,它表示 2147483647。所以正数和负数的个数是平衡的。

正零和负零的原码,反码,补码

在这里插入图片描述

偏移表示法(浮点数的表示方法)

最小的负数用00…000表示,最大的正数用11…111表示,0一般用10…000表示,即通过将数加一个偏移使其具有非负的表示形式。
浅红色文字:浅红色:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值