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

关于二进制取反的问题
public class Test{
    public static void main(String args[]){
        int i = 0xFFFFFFF1;
        int j=~i;
        System.out.println(j); 
   }

}

为什么这个程序运行之后j=14。我知道i=-15,可就是在int j=-i这里不知道怎么算的,请各位帮我解决。说出详细的计算过程。

------解决方案--------------------
~这是取反操作符,是按照One's Complement的法则计算的

http://en.wikipedia.org/wiki/Ones%27_complement

在二进制数的基础上操作取反

i=0xFFFFFFF1=1111 1111 1111 1111 1111 1111 1111 0001
对i取反
~i=0000 0000 0000 0000 0000 0000 0000 1110=14