猿问

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

例如:
short a;
a能表示最大的2进制的数为:0111111111111111 = 32767
能表示最大的负数为:1111111111111111 = -32768
unsigned a;
无符号能表示的最大数为:1111111111111111 = 65535
还有无符号表示的最大值是正数加负数的?
100000000000000 也就是说这个本来是代表-0的,但是正数里面也有个是正0,意义都一样.所以用负数的话全零就代表从-1开始?

人到中年有点甜
浏览 147回答 3
微课
3回答

浮云间

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

潇湘沐

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

繁星coding

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