关于一个16进制数字的java问题~着急等待...
看下面的程序,最后i、j的打印结果是什么,给出原因解释~~
Java code
public class Test {
public static void main (String args[]) {
int i = 0xFFFFFFF1;
int j = ~i;
System.out.println(i);
System.out.println(j);
}
}
------解决方案--------------------0xFFFFFFF1 :第一位是1,所以应该是个负数
所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
打出来应该是
-15
14
------解决方案---------------------15
14
-15的原因是:0xFFFFFFF1是15的原码取反再+1得到的,所以你只需要反过来推就行了。
0xFFFFFFFF是-1
0xFFFFFFFE是-2
……
0xFFFFFFF1是-15
明白了?