原码、反码与补码

正数的补码等于原码

负数的补码等于符号位不变,数值位的反码+1

如果要算-8的补码的话:

(1)如果用4位二进制数表示的话,原码1000(“1”表示“-”号,“000”可以看成数字位“111”+1的结果)——反码1111——补码1000。
(2)如果用8位二进制数表示的话,原码1000 1000——反码1111 0111
——补码1111 1000。
以上为思考过程,但是要注意:4位二进制数表示的范围是:原码-7到7(其中0有两种表示),反码也是-7到7(其中0有两种表示),而补码是-8到7(反码中的负数移1位,空出一个位置给-8)。即是说,在4位二进制表示中,-8只有补码,没有原码和反码。同理,在5位二进制表示中,-16只有补码10000,没有原码和反码。在3位二进制表示中,-4只有补码100,没有原码和补码。在2位二进制中,-2只有补码10,-1补码为11,0的补码为00,1的补码为01。
更一般地讲,补码的引入是为了表示符号数。比如4位二进制补码,可以表示的数的范围是-8到7,其中0000到0111依次对应着0到7,1000到1111依次对应着-8到-1,前面的符号位0和1可以看成是对两个容器的编号,容器“0”放非负数,容器“1”放负数,而且补码数值增加对应的数本身大小也增加(这一点至关重要)。正因为补码加1,对应的数字也在循环区间(如-8到7)中加1,从而使得补码加减法和真实数字可以直接对应。
再更一般讲:原码,反码,补码,本质上都是对同一个01字符串的不同理解方式。我们学的这三个概念,也就是01字符串的三种对应关系(就如同3种映射,3个函数)。除了这三种码,我们也可以根据需要,去定义自己的码。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值