这行代码中发生了什么?

时间:2015-03-29 18:32:54

标签: java

我在玩一些试图学习Java的随机代码时遇到了这个问题

y = (0x000000FF & ((int)x));

x = -102, y = 154

这一行究竟发生了什么?

2 个答案:

答案 0 :(得分:4)

该操作将x中最不重要的8位变为y,从而屏蔽了24个较高有效位。

十六进制表示中的

-102ffffff9a,这会使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

你理解你的结果......