【问题标题】:Using xor to seperate colors from pixels使用 xor 将颜色与像素分开
【发布时间】:2011-05-31 08:44:33
【问题描述】:

我正在做这个普林斯顿挑战,我在下一页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 次异或运算后创建新颜色,因为异或运算只会产生真或假值。

【问题讨论】:

    标签: java colors xor


    【解决方案1】:

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

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

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

    另见this answer。

    【讨论】:

    • 谢谢!这现在更有意义了。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        1110 xor 1001 = 0111

        更多信息请见:http://en.wikipedia.org/wiki/Bitwise_operation#XOR

        【讨论】:

          【解决方案5】:

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

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

          1111 1111 异或

          1010 1010 =

          0101 0101

          【讨论】:

            【解决方案6】:

            作业指的是bitwise operations。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-08-21
              • 1970-01-01
              • 2014-12-01
              • 2022-01-14
              • 2012-10-28
              • 2019-08-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多