为了账号安全,请及时绑定邮箱和手机立即绑定

如果第一位是负号,为什么表示负数的时候表示的最大值能比正数多加个1?

如果第一位是负号,为什么表示负数的时候表示的最大值能比正数多加个1?

C++ C
人到中年有点甜 2022-05-12 11:11:58
例如:short a;a能表示最大的2进制的数为:0111111111111111 = 32767能表示最大的负数为:1111111111111111 = -32768unsigned a;无符号能表示的最大数为:1111111111111111 = 65535还有无符号表示的最大值是正数加负数的?100000000000000 也就是说这个本来是代表-0的,但是正数里面也有个是正0,意义都一样.所以用负数的话全零就代表从-1开始?
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

你只需要记住
-0 != +0
而是 -32768 就行了
这是个规定,没有为什么
就像0代表假,非0代表真
就是这样规定的,根本没有为什么

查看完整回答
反对 回复 2022-05-15
?
潇湘沐

TA贡献1816条经验 获得超6个赞

如果为正数,那以 1 开头
如果为负数,那以 0 开头

查看完整回答
反对 回复 2022-05-15
?
繁星coding

TA贡献1797条经验 获得超4个赞

-32768是 1000 0000 0000 0000
而 1111 1111 1111 1111表示的是-1。
至于你的问题,有个很好想的思路:
符号位是0的时候,能表示0~32767; 那加个负号的符号位,就可以表示-0~-32767。 由于我们0只需要一个,所以此时的-0就可以用来多表示一个更大的负数-32768了。
仅供理解,实际原因还是需要看补码的原理

查看完整回答
反对 回复 2022-05-15
  • 3 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号