看下面的程序,最后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);
}
}
public static void main (String args[]) {
int i = 0xFFFFFFF1;
int j = ~i;
System.out.println(i);
System.out.println(j);
}
}
楼主【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 %
敬礼!
取反之后 二进制是:0000 0000 0000 0000 0000 0000 0000 1110打印出来:4294967281 14分析出来的,应该正确。
所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
打出来应该是
-15
14
所以0-0xFFFFFFF1 = - 0000 0000 0000 0000 0000 0000 0000 1111 = -15
打出来应该是
-15
14
0xFFFFFFF1 二进制是 1111 1111 1111 1111 1111 1111 1111 0001
取反之后 二进制是:0000 0000 0000 0000 0000 0000 0000 1110
具体-15不知道怎么得出来的,14是异或后的结果
14-15的原因是:0xFFFFFFF1是15的原码取反再+1得到的,所以你只需要反过来推就行了。0xFFFFFFFF是-1
0xFFFFFFFE是-2
……
0xFFFFFFF1是-15明白了?