为什么用补码表示负数, 为什么负数比正数多1?

(1)无符号16位的范围

0000 0000 0000 0000 到 1111 1111 1111 1111

无符号16位整型数据的取值范围是0到65535。

(2)有符号16位范围

正数: 0000 0000 0000 0001 到 0111 1111 1111 1111

十进制数为1到32767

负数1000 0000 0000 0000 到 1111 1111 1111 1111

十进制数为-32768到32767

(3)-1 和 -32768的补码

1的原码: 0000 0000 0000 0001;

取反: 1111 1111 1111 1110;

+1: 1111 1111 1111 1111。

-1的补码为1111 1111 1111 1111。

32768的原码:1000 0000 0000 0000

取反:0111 1111 1111 1111

+1: 1000 0000 0000 0000

(4)-32769为什么不行

 32769原码: 1000 0000 0000 0001

取反: 0111 1111 1111 1110

+1: 0111 1111 1111 1111

这是什么, 32767

(5)为什么要用补吗显示负数

为了正数和负数相加的时候容易操作吧

比如2+(-1), 用负数直接显示, 就是-3了

用补码呢

(6)为什么有符号负数比正数个数多1个呢?(修正)

假如是8位的有符号

正数范围 0000 0001 ~ 0111 1111(1~127)

负数对应的范围10000001 ~ 1111 1111(-127~-1)

直观点:

-128: 10000000

-127: 10000001

-126: 10000010

...

-2: 11111110

-1: 11111111

原本首位为0或者1(正负符号) 后面7位,  对应的组合个数是一样的. 

但是0000 0000给0用了, 10000000 (-128)给负数用了,所以负数比正数多一个. 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值