话说“-128”在计算机中的存储

关于负数为什么用补码的原因

可以参考这篇文档(写得还是不错的):补码原理


整数(区别于浮点数)的存储

  1. 正数:存的是本身
  2. 负数:符号位不变,数值位取反码,再加一

-0与+0的存储

比如8位的-0

  1. 原码: 1000 0000
  2. 反码: 1111 1111
  3. 补码:1 0000 0000

计算机的存储 :0000 0000(符号位舍去了)

比如8位的+0

  1. 原码: 0000 0000
  2. 反码: 0000 0000
  3. 补码: 0000 0000

计算机的存储 :0000 0000

-128的存储

问题:8位为什么可以表示 -128到+127?

  • 解释一:8位补码组合有256种
    0000 0000- 0111 1111 -> 0到+127
    1000 0000 (用来干嘛?不能让它空着,多浪费,只好用来表示-128)
    1111 1111-1000 0001 -> -1到-127

  • 解释二:

     原码               补码                   值
    

    0111 1111      0111 1111        +127
      *          *          *
      *          *          *
     不断减1       不断减1         
    0000 0000      0000 0000         0
    1000 0001      1111 1111         -1
      *          *          *
      *          *          *
    1111 1111        不断减1       
    1111 1111      1000 0001        +127
     无法表达      1000 0000        +128



  • 解释三:

    计算机中只有加法,减一数 等于加这个数的补码
    256-128=128
    256-(128的补码)=128
    (128的补码)=256-128
             =128(1000 0000)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值