我在玩一些试图学习Java的随机代码时遇到了这个问题
y = (0x000000FF & ((int)x));
x = -102, y = 154
这一行究竟发生了什么?
答案 0 :(得分:4)
该操作将x
中最不重要的8位变为y
,从而屏蔽了24个较高有效位。
-102
为ffffff9a
,这会使y
成为9a
。
答案 1 :(得分:2)
public static void main(final String... args)
{
System.out.println(Integer.toBinaryString(-102));
System.out.println(Integer.toBinaryString(154));
}
打印:
11111111111111111111111110011010
10011010
现在改为编写:
11111111111111111111111110011010
00000000000000000000000010011010
最后,0xff是:
00000000000000000000000011111111
你理解你的结果......