计算机存储数值为什么使用补码?

计算机存储数值为什么使用补码?

什么是原码,反码,补码?

原码,反码,补码是计算机对数字的二进制表示方法。

原码:将最高位作为符号位(0为正,1为负),其余位数用来表示此数字绝对值的大小。

反码:如果是正数,与原码相同;如果是负数,符号位不变,其余位取反。

补码:如果是正数,与原码相同;如果是负数,则将数字的反码加上1。

例如:

数值原码反码补码
60000 01100000 01100000 0110
-61000 01101111 10011111 1010

使用补码的意义

补码的意义体现在两个方面

  1. 统一了0和-0的编码

    以byte为例:

    十进制原码反码补码
    00000 00000000 00000000 0000
    -01000 00001111 1111(1)0000 0000

    从数值上来看,0和-0大小是一样的,但是它们原码和反码的表示方式却是不一样的,因此原码和反码是无法统一0和-0的编码。再看-0的补码是(1)0000 0000,需要九位才能表示,最高位1溢出,因此-0的补码也是0000 0000,这样便统一了0和-0的编码。

  2. 符号位和其它位可以一同处理。

    以9-1为例:

    十进制原码反码补码
    90000 10010000 10010000 1001
    -11000 00011111 11101111 1111
    80000 10000000 10000000 1000

    补:计算机的加减法运算都是通过加法实现的。

    通过原码计算得到的结果:1000 1010,十进制是-10,结果不正确。

    通过反码计算得到的结果:0000 0111,十进制是7,结果不正确。

    通过补码计算得到的结果:0000 1000,十进制是8,结果正确。

    由此可以看出如果使用补码进行计算,计算机可以将符号位和其它位一同处理。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值