-32768换成二进制占了符号位了,为何不是-32767?
int不知是16位的还是32位的,反正16位的话,能表示的数的范围是-32768~32767.可是32768的二进制补码是1000,0000,0000,0000,已经把符...
int不知是16位的还是32位的,反正16位的话,能表示的数的范围是-32768~32767.
可是32768的二进制补码是1000,0000,0000,0000,已经把符号位占了,最小能表示的数应该和正数对应也是32767呀,加上符号位就是-32767=1111,1111,1111,1111,何来-32768? 展开
可是32768的二进制补码是1000,0000,0000,0000,已经把符号位占了,最小能表示的数应该和正数对应也是32767呀,加上符号位就是-32767=1111,1111,1111,1111,何来-32768? 展开
展开全部
在16位机上,整数类型占2个字节,有符号数的表示范围为:-32768~32767
二进制表示数据,用首位表示符号位,其余位来表示数值,这种方法表示出来的数称为原码。 但这样会出现“正0”和“负0”数据,与现实中数的应用不符,而且,用原码也不方便计陆消算机进行运算。所以,科学家们提出了补码概念,用来在计算机中存储整数。
规定:
正数的补码与原码相同指芦
0的表示形式为000...000 (16位全是0)
负数的补码为反码早逗知加1
按此规定,“负0”就变成了-32768
-1 = 1111111111111111
-2 = 1111111111111110
。。。。
-32768=1000000000000000
这是推算的结果,也可以说是规定的结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询