负数为何在内存中以补码的形式存在?

  但凡有接触计算机学科的,肯定对原码反码补码都不陌生。因为这是一些比较基础,但又是必须掌握的一个知识点。

  1. 这些码是什么?
     这些码是八位二进制码,每一位码的取值只有机器能识别的0和1,这便是他们的真身。比如说十进制的25,其原码是 0001 1001。

  2. 正数的原码反码补码
     正数的原码=反码=补码。如何区分正负数?其中最高代表的符号位。最高位为0,代表正数。最高位是1,代表负数。这是规定,没什么好说。也不会有太多的疑惑。

  3. 负数的原码反码补码
     负数的原码就不用多解释了。
     负数的反码: 将最高位的符号位以外的数,全部取反,这样就得到了负数的反码。
     负数的补码:将负数的反码进行加一操作,得到的结果便是负数的补码。

  4. 负数的补码为什么和正数的不一样?
     我们不妨假设一下如果负数的和正数一样。
    举个例子来说吧:大家都知道 5+(-5)=0
    0的二进制原码为: 0000 0000
    5的二进制原码为: 0000 0101
    -5的二进制原码为:1000 0101
    -5的二进制反码为:1111 1010
    -5的二进制补码为:1111 1011
    那么按照这个规律,得到的结果是1000 1010等于-10,与事实结果的0相反。

 反过来推证:
要使结果为0,那么-5的二进制应该为多少?
结果是-5在内存中应该为:1111 1011。
只有这样,计算机在执行加上一个负数才不会发生数据乱码的问题。
所以在教科书上会有负数在硬盘或内存中以二进制补码的形式存在。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值