使用异或将颜色与像素分开
我正在参加普林斯顿挑战赛,在下一页上遇到了我不明白的一行http://www.cs.princeton.edu/courses/archive/fall10/cos126/assignments/lfsr.html,该线位于管道的第一张图片的下方。
对于每个像素 (x, y),按照 (0, 0)、(0, 1)、(0, 2)、... 的顺序,提取颜色的红、绿、蓝分量 (每个分量都是 0 到 255 之间的整数)。
然后,将红色分量与新生成的 8 位进行异或。对绿色执行相同的操作(使用另外 8 个新生成的位),最后对蓝色执行相同的操作。
使用异或运算的结果创建新颜色,并将像素设置为该颜色。
我不太确定如何在 3 次异或运算后创建新颜色,因为异或运算只会产生 true 或 false 值。
I'm doing this Princeton challenge and I encountered a line I don't understand on the following page http://www.cs.princeton.edu/courses/archive/fall10/cos126/assignments/lfsr.html, the line is just below the first picture of the pipe.
For each pixel (x, y), in the order (0, 0), (0, 1), (0, 2), ..., extract the red, green, and blue components of the color (each component is an integer between 0 and 255).
Then, xor the red component with 8 newly generated bits. Do the same for the green (using another 8 newly generated bits) and, finally, the blue.
Create a new color using the result of the xor operations, and set the pixel to that color.
I'm not quite sure how a new color can be created after 3 xor operations, since an xor operation would only yield a true or false value.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
不,您正在将一个 8 位 颜色分量值与另一个 8 位 值进行异或,大致如下:
虽然单个
xor
对两位进行操作以产生另一位,对多位值进行该操作意味着依次对每一位进行操作。另请参阅此答案。
No, you're xoring an 8-bit color component value with another 8-bit value, along the lines of:
While a single
xor
operates on a two bits to produce another bit, doing that operation on multi-bit values means doing it on each bit in turn.See also this answer.
布尔(逻辑)运算中的异或仅返回 true 或 false,但您也可以使用按位异或。在这种情况下,数字中的每一位(在本例中为 8 位值)都被视为布尔值。这会导致 8 个新位为 true 或 false,从而返回一个新的 8 位值。其中三个组合将为您提供 RGB 值。
An xor in boolean (logical) operations returns only true or false, but you can use a bitwise xor too. In that case, each bit in a number (an 8 bit value in this case) is treated as if it were a boolean. This results in 8 new bits being either true or false, thus returning a new 8 bit value. Three of these combined will give you an rgb value.
我认为这是按位异或,将颜色转换为二进制,然后对每个数字进行异或以获得结果。例如 00001111 异或 11111111 = 11110000
I think it's bitwise XOR, you convert the color to binary, then XOR each digit to get the result. For example 00001111 XOR 11111111 = 11110000
你的说法是不真实的。例如:
1110 xor 1001 = 0111
有关详细信息,请参阅:http://en.wikipedia.org/维基/Bitwise_operation#XOR
your statement is untrue. for example:
1110 xor 1001 = 0111
for more information see:http://en.wikipedia.org/wiki/Bitwise_operation#XOR
在这种情况下,异或运算是逐位进行的。所以结果是 1 或 0,但对于每个比特而言。
1111 1111 异或
1010 1010 =
0101 0101
In this case the xor operates bits by bits. So the result it's 1 or 0 but for each single bit.
1111 1111 xor
1010 1010 =
0101 0101
该赋值引用了按位运算。
The assignment is referring to bitwise operations.