java - image.getRGB(x,y) 的二进制 AND (&) 运算;

标签 java image binary rgb

看下面的代码:

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

他们如何将 8 位 0x00000FF 与 32 位 image.getRGB 进行比较,以便获得结果 0 或 255,就像我上面的情况一样?

最佳答案

简单地把它们想象成数字,无论位数是多少,都应该将数字与代表2的相同幂的位对齐在一起,然后进行二进制运算:

im.getRGB :       1111 1111 0000 0000 0000 0000 0000 0000
0x000000FF :      0000 0000 0000 0000 0000 0000 1111 1111
                  ^^^^ ^^^^                     ^^^^ ^^^^
im.getRGB & 0xFF: 0000 0000 0000 0000 0000 0000 0000 0000 = 0

与其他示例相同:

im.getRGB :       1111 1111 1111 1111 1111 1111 1111 1111
0x000000FF :      0000 0000 0000 0000 0000 0000 1111 1111
                  ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^
im.getRGB & 0xFF: 0000 0000 0000 0000 0000 0000 1111 1111 = 255

关于java - image.getRGB(x,y) 的二进制 AND (&) 运算;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36244409/

相关文章:

vb.net - 分配二进制常量

java - 如何使用 return true 语句创建 boolean 方法

java - 如何判断数组索引是否存在?

javascript - 图片关闭时制作动画 Photoswipe

java - Wicket 口动态图像 URL

随机像素的图像插值

c - 当我尝试使用二分搜索递归地计算数组中某个数字的出现次数时,为什么此代码会返回段错误?

java - 数组列表取消移位

java - CellEditorListener 不会检测单元格何时被编辑

java - Android应用程式按下登入按钮当机