使用异或将颜色与像素分开

发布于 2024-11-10 14:37:36 字数 529 浏览 5 评论 0原文

我正在参加普林斯顿挑战赛,在下一页上遇到了我不明白的一行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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

酒中人 2024-11-17 14:37:36

不,您正在将一个 8 位 颜色分量值与另一个 8 位 值进行异或,大致如下:

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

虽然单个xor对两位进行操作以产生另一位,对多位值进行该操作意味着依次对每一位进行操作。

另请参阅此答案

No, you're xoring an 8-bit color component value with another 8-bit value, along the lines of:

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

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.

舟遥客 2024-11-17 14:37:36

布尔(逻辑)运算中的异或仅返回 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.

青衫儰鉨ミ守葔 2024-11-17 14:37:36

我认为这是按位异或,将颜色转换为二进制,然后对每个数字进行异或以获得结果。例如 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

温柔戏命师 2024-11-17 14:37:36

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

你的说法是不真实的。例如:

1110 xor 1001 = 0111

有关详细信息,请参阅:http://en.wikipedia.org/维基/Bitwise_operation#XOR

since an xor operation would only yield a true or false value.

your statement is untrue. for example:

1110 xor 1001 = 0111

for more information see:http://en.wikipedia.org/wiki/Bitwise_operation#XOR

偷得浮生 2024-11-17 14:37:36

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

在这种情况下,异或运算是逐位进行的。所以结果是 1 或 0,但对于每个比特而言。

1111 1111 异或

1010 1010 =

0101 0101

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.

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

怀中猫帐中妖 2024-11-17 14:37:36

该赋值引用了按位运算

The assignment is referring to bitwise operations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文