我相信你根本不明白髮生了什麼事情。第一行已經是不正確的:
它說,「在紅色的情況下,移動一個8位掩碼的剩餘16位,反轉它(使用〜運算符)和」和「(&)此面膜具有RGB值」
這意味着
8 bit mask of ones: 0xFF (00000000 00000000 00000000 11111111)
shift left 16 bits: 0xFF << 16 (giving you 00000000 11111111 00000000 00000000)
invert it : ~ (0xFF << 16) (giving you (11111111 00000000 11111111 11111111)
& this mask with RGB value: result = pixel & (~(0xFF << 16))
的result
是pixel
與17月24日清零。
這是第一階段(你的功課描述是有後續步驟)設置在pixel
「紅」值,我不知道這是否是你的意圖,但你開發無關用你的問題來做:而不是設置紅色值,看來你得到紅色值。
但是,您所開發的仍然是遠遠不夠的。例如你應該有一個類似的掩碼,其中第17到第24位是1,其他位是0,然後&這個掩碼的像素,然後將剩餘的值(位於第17到第24位)移到第0到7位。
我不會給你實際的答案,因爲這是你的工作,從中吸取教訓。不過,我相信我給出的提示是綽綽有餘的。
您應該在後續操作中重新使用'red'值。由於'Red'總是由'Pixel'上的某個操作分配的,因此您不會累積3次操作,只執行3次獨立操作。 – jtahlborn
您正在爲「紅色」分配三個不同的值。前兩個的結果被第三個結果覆蓋,所以這是你得到的唯一結果。 –