关于二进制取反的问题
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