日期:2014-05-20  浏览次数:20796 次

关于一个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

明白了?