看下面的程序,最后i、j的打印结果是什么,给出原因解释~~public class Test {
 public static void main (String args[]) {
 int i = 0xFFFFFFF1;
 int j = ~i;
 System.out.println(i);
 System.out.println(j);
 }               
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【sxzhliang】截止到2008-07-22 09:41:47的历史汇总数据(不包括此帖):
    发帖的总数量:5                        发帖的总分数:60                       每贴平均分数:12                       
    回帖的总数量:4                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:5                        结贴的总分数:60                       
    无满意结贴数:1                        无满意结贴分:20                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:20.00 %               无满意结分率:33.33 %                  
    敬礼!
      

  2.   

    0xFFFFFFF1 二进制是 1111 1111 1111 1111 1111 1111 1111 0001 
    取反之后    二进制是:0000 0000 0000 0000 0000 0000 0000 1110打印出来:4294967281     14分析出来的,应该正确。
      

  3.   

    0xFFFFFFF1 :第一位是1,所以应该是个负数
    所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
    打出来应该是
    -15
    14
      

  4.   

    0xFFFFFFF1 :第一位是1,所以应该是个负数
    所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
    打出来应该是
    -15
    14
      

  5.   

    输出结果-15    14
    0xFFFFFFF1 二进制是 1111 1111 1111 1111 1111 1111 1111 0001
    取反之后    二进制是:0000 0000 0000 0000 0000 0000 0000 1110 
    具体-15不知道怎么得出来的,14是异或后的结果
      

  6.   

    -15
    14-15的原因是:0xFFFFFFF1是15的原码取反再+1得到的,所以你只需要反过来推就行了。0xFFFFFFFF是-1
    0xFFFFFFFE是-2
    ……
    0xFFFFFFF1是-15明白了?