2011-05-31 86 views
0

所以我正在做普林斯顿的挑战(不,这不是我的作业,我也不是在大学),我在下面的页面上遇到了模糊的线索“http://www.cs .princeton.edu/courses/archive/fall10/cos126/assignments/lfsr.html“,该行就在管道的第一张图片下方。在作业中不清楚的写法

对于每个像素(x,y)时,在顺序 (0,0),(0,1),(0,2),...,提取 红色,绿色和蓝色 组件的颜色(每个组件是一个 整数在0和255之间)。然后,xor 红色组件带有8个新生成的 位。对 绿色(使用另外8个新生成的 比特)也是如此,最后是蓝色。使用xor 操作的结果创建一个 新颜色,并将像素设置为该颜色的 。

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

回答

7

不,你异或与其他8位8位颜色成分值,沿着线:当一个xor上两位来操作

1010 1010 
xor 1111 0000 
    ---- ---- 
    0101 1010 

产生另一位,在多位值上执行该操作意味着依次在每一位上执行该操作。请参阅this answer

+0

谢谢!这使现在更有意义。 – nope 2011-05-31 08:47:57

0

boolean(逻辑)操作中的xor只返回true或false,但也可以使用按位xor。在这种情况下,一个数字中的每一位(在这种情况下是一个8位值)被视为布尔值。这导致8个新比特为真或假,从而返回新的8比特值。其中三个组合会给你一个rgb值。

0

我认为这是按位异或,你将颜色转换为二进制,然后异或每个数字来得到结果。例如00001111 XOR 11111111 = 11110000

0

我不太清楚如何在新的颜色可以 后3 XOR操作来创建, 因为一个xor操作只会产生一个真实或错误的值。

在这种情况下,异或操作逐位。所以结果是1或0,但是对于每个单独的位。

1111 1111 XOR

1010 1010 =