public class Test{
public static void main(String args[]) {
int x = 0x80000000;
System.out.println(x);
}
}
打印结果为:-2147483648
对以上这个结果,我分析是这样的:
转化为二进制为: 1000 0000 0000 0000 0000 0000 0000 0000
转化为十进制为: 2的32次方,应该为2147483648,但是为何是负数,小弟就不是很明白了,望指点一二,先谢了!
public static void main(String args[]) {
int x = 0x80000000;
System.out.println(x);
}
}
打印结果为:-2147483648
对以上这个结果,我分析是这样的:
转化为二进制为: 1000 0000 0000 0000 0000 0000 0000 0000
转化为十进制为: 2的32次方,应该为2147483648,但是为何是负数,小弟就不是很明白了,望指点一二,先谢了!
0x80000000 转为二进制后为1000 0000 0000 0000 0000 0000 0000 0000
如果1是表示为符号位,那谁来表示1X2的31次方呢?
更奇怪的是如果改为: int x = -0x80000000;
打印出来还是-2147483648
不知是何原因,望哪位明白的能够解释明白,先谢了!
楼主的取值比int型变量的最大取值大了1。溢出了!