2011-05-31 43 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 =