short int a=-32769,为什么输出的是32767?

short int的取值范围为是-32768~32767,-32769超出范围了,但是我用原码补码的知识解释不清,求助。。

从数学上讲,-32769转换为二进制为(... 1111 1111) (0111 1111 1111 1111)
第一个括号里是符号位,全为1。
题目中的short int范围是-32768~32767,说明short int在内存中只占2个字节(16位),给short int变量赋值时系统会抛掉前面的所有内容,只保留最小的16位。-32769的后16位是第二个括号里的0111 1111 1111 1111,这个数正好是32767。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-05
-32769的原码: 10000000 00000000 10000000 00000001(最高位为符号位)
-32769的反码: 111111111 111111111 011111111 111111110
-32769的补码: 111111111 111111111 011111111 111111111
上面是用4个字节表示的,short只能存位的2个字节
故实际变量a存的是 01111111 11111111即32767

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网