sol*_*olo 0 java int long-integer
嗨,我对某些代码有一些小问题,我无法给出有关结果的解释。
//what happens?
public static void what() {
int number = 2147483647;
System.out.println(number + 33);
}
//Here is my solution for the probleme
public static void what() {
long number = 2147483647;
System.out.println(number + 33);
}
Run Code Online (Sandbox Code Playgroud)
将int编号作为变量的第一个代码给了我-2147483616结果。因此,当我将int更改为long时,我会得到预期的良好结果。所以问题是谁可以帮助我解释为什么intnumber + 33 = -2147483616
小智 7
Java整数基于32位。保留符号的第一位(+ = 0 /-= 1)。
所以2147483647等于01111111 11111111 11111111 11111111。
加更多将使该值变为负数,因为第一位变为1。
10000000 00000000 00000000 00000000等于-2147483648。
您要添加的其余32个项-2147483648将使您得到的结果-2147483616。