【发布时间】:2016-07-14 15:41:34
【问题描述】:
看下面的代码:
image.getRGB(x,y) & 0x000000FF
当结果image.getRGB(x,y)为-16777216时,AND运算结果为0(BLACK COLOR)
当结果image.getRGB(x,y)为-1时,AND运算结果为255(WHITE COLOR)
我的问题是,如果您查看我在 Java - Understanding about image.getRGB(x,y) output in Binary term 中的相关文章,您可以看到 image.getRGB(x,y) 的二进制结果包括 Alpha、Red、Green 和 Blue(32 位)但 0x000000FF只有8位;例如:
image.getRGB : 1111 1111 0000 0000 0000 0000 0000 0000
0x000000FF : 1111 1111
image.getRGB & 0x000000FF : 0000 0000
第二个例子:
image.getRGB : 1111 1111 1111 1111 1111 1111 1111 1111
0x000000FF : 1111 1111
image.getRGB & 0x000000FF : 1111 1111
他们如何比较 0x00000FF 的 8 位和 32 位 image.getRGB 以便得到结果 0 或 255,就像我上面的情况一样?
【问题讨论】:
-
你确定你没记错。此代码输出:
System.out.println(0xFF<<24 & 0xFF); → 0System.out.println(Color.black.getRGB()); → -16777216System.out.println(Color.black.getRGB() & 0xFF); → 0 -
@maljam :抱歉,我的问题已被编辑。您可以在上面再次检查。谢谢
-
-16777216==0xFF00000