8位有符号数的补码表示范围

范围是 -128至127.
根据补码的几条规定即可推出上述结论:
1 若二进制每位全为0,则表示数0
2 若最高位(即符号位)为0,表示正数
3 若最高位为1, 表示是负数,而该负数的绝对值是多少呢?将每个二进制位(包括符号位)取反加1,得到一个二进制数,将该数看成无符号数,其值就是上述负数的绝对值。

例如,二进制的 10000000 的最高位为1, 所以它表示的是负数。是负的多少呢?我们将其八位全部取反,得到01111111, 然后加1,得到10000000. 将该数看作无符号数,值为128, 故计算机中的10000000表示的是-128

最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数。

最高位表示符号位吧,也即有符号的8位二进制数的补码问题.
下面一步步的说明:
最高位符号位,故后面还有7位,正数时原码和补码相同,故此时的
0表示为0000 0000;
1表示为0000 0001;
依次类推...
0111 1111即表示+(64+32+16+8+4+2+1)=+127
负数时最高位为1,负数的补码为对应的原码部分取反加1,故有:
-1即1000 0001取反后为1111 1110 再加1得补码为1111 1111;
-2即1000 0010(理解为-1的数字位加了1成了10)取反后为1111 1101再加1得补码为1111 1110;
依次类推...
-127即1111 1111取反即1000 0000再加1得补码为1000 0001
-128即1000 0000(同理可以理解为数字位加1成了000 0000)取反后为1111 1111再加1得补码1000 0000
看以上的结果,从0000 0000到1000 0000再到1111 1111全部的8位已经组合完毕,不能再有其他情况出现了,故只能表示-128~+127

  • 32
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值