Java 使用xor从像素中分离颜色

Java 使用xor从像素中分离颜色,java,colors,xor,Java,Colors,Xor,我正在做普林斯顿挑战赛,我在下一页遇到了一条我不明白的线,这条线就在第一张管道图片的下方 对于每个像素(x,y),按照(0,0),(0,1),(0,2),…)的顺序,提取颜色的红色、绿色和蓝色分量(每个分量是介于0和255之间的整数) 然后,用8个新生成的位对红色分量进行异或运算。对绿色(使用另外8个新生成的位)和最后的蓝色执行相同的操作 使用xor操作的结果创建新颜色,并将像素设置为该颜色 我不太确定如何在3次异或操作后创建新颜色,因为异或操作只会产生真值或假值。不,您将8位颜色分量值与另一个

我正在做普林斯顿挑战赛,我在下一页遇到了一条我不明白的线,这条线就在第一张管道图片的下方

对于每个像素(x,y),按照(0,0),(0,1),(0,2),…)的顺序,提取颜色的红色、绿色和蓝色分量(每个分量是介于0和255之间的整数)

然后,用8个新生成的位对红色分量进行异或运算。对绿色(使用另外8个新生成的位)和最后的蓝色执行相同的操作

使用xor操作的结果创建新颜色,并将像素设置为该颜色

我不太确定如何在3次异或操作后创建新颜色,因为异或操作只会产生真值或假值。

不,您将8位颜色分量值与另一个8位值进行异或,如下所示:

    1010 1010
xor 1111 0000
    ---- ----
    0101 1010
当单个异或运算在两位上产生另一位时,对多位值进行该运算意味着依次对每一位进行该运算


另请参见。

布尔(逻辑)运算中的异或仅返回true或false,但也可以使用按位异或。在这种情况下,数字中的每一位(本例中为8位值)都被视为布尔值。这将导致8个新位为真或假,从而返回一个新的8位值。其中三个组合将得到一个rgb值。

我认为是按位异或,将颜色转换为二进制,然后对每个数字进行异或运算,得到结果。例如000011111或11111111=11110000

因为异或运算只会产生真值或假值

你的陈述是不真实的。例如:

1110异或1001=0111

有关更多信息,请参阅:

我不太确定一种新的颜色怎么能 在3次异或操作后创建, 因为xor操作只会 产生正确或错误的值

在这种情况下,异或逐位操作。结果是1或0,但对于每一位

1111111异或

10101010=


0101 0101

作业所指的是。

谢谢!现在这就更有意义了。