//请教一个笔试题,:   
    public static void main(String[] args) {   
        // TODO Auto-generated method stub   
        int i= 0xFFFFFFFA;   
        int j=~i;   
        System.out.println(i);   
        System.out.println(j);   
    }   
/*结果为什么是:  
-6  
5  
为什么*/  

解决方案 »

  1.   

    这哪有为什么。
    自己把对应的二进制位画出来看看就是了。
    0xFFFFFFFA 是1111 1111 1111 1111 1111 1111 1111 1010
    按位取反     0000 0000 0000 0000 0000 0000 0000 0101理解补码表示的原理即可。      
      

  2.   

    经javaeye高手指点,我明白了。。负数在电脑中用补码表示,计算出0xFFFFFFFA的补码为:1000 0000 0000 0000 0000 0000 0000 0101 再+1就等于 
    1000 0000 0000 0000 0000 0000 0000 0110 第一个1表示负数,后面0110就是6 ,那么结果就是-6 int j=~i; ~ 符号表示取反 
    i=1111 1111 1111 1111 1111 1111 1111 1010 ,取反则为 
    j=0000 0000 0000 0000 0000 0000 0000 0101 就等于5了。