原码、反码、补码扫盲贴

背景:

对于一个数字,计算机需要使用一定的可运算的编码方式对其进行编码。我们这里所讲的原码,反码,补码都是计算机对具体二进制数据的编码方式。

例如对于一个简单的数字6, 我们可以用四个二进制位0110这样的表示。

什么是原码?

计算机中所有的数均用0、1编码表示,数字的正负号也不例外,如果一个机器数字长是n位的话,约定最左边的第一位用作符号位(0表示整数,1表示负数),其余n-1位用于表示数值。比如:(以8位二进制为例)

+1 的原码 = 0000 0001

-1的原码 = 1000 0001

因为第一位是符号位,所以8位二进制数的取值范围就是:(1111 1111)~ (0111 1111),即[-127 ~ 127]。以此类推,用原码表示的n位二进制数的取值范围就是:

-2^(n-1) ~ 2^(n-1)

补码计算时应根据此范围进行判断是否发生溢出。

原码的缺点

原码不能直接参加运算,可能会出错。最明显的就是一个数与它相反数相加不等于0,例如,1+(-1)=0,而在二进制中00000001+10000001=10000010,10000010换算成十进制为-2。显然是不对的,为了解决这个问题,于是反码出现了。

那么什么是反码?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值