我正在開發一個小型項目。在谷歌搜索過程中,我看到了一些java代碼。>> java代碼顏色示例中>>和&運算符的含義
int red = (pixel >> 16) & 0x000000FF;
但我不明白這是什麼意思?有人解釋過那個邏輯運算的總結嗎?我讀到它是這樣轉移的,但轉移了什麼?
我正在開發一個小型項目。在谷歌搜索過程中,我看到了一些java代碼。>> java代碼顏色示例中>>和&運算符的含義
int red = (pixel >> 16) & 0x000000FF;
但我不明白這是什麼意思?有人解釋過那個邏輯運算的總結嗎?我讀到它是這樣轉移的,但轉移了什麼?
這是一個按位與「AND」運算符。當它應用於數字FF
(十六進制)時,它將清除除最後8以外的整數的所有位。
回想一下,按位與「AND」會經歷數字的二進制表示,並將結果僅放入結果中兩個操作數都有的位置。由於包含一個FF
32位掩碼看起來像這樣在二進制
00000000000000000000000011111111
上部三個字節結果的將是零。最後一個字節,其中FF
具有全1,將等於第一個操作數的最後一個字節。
顏色的紅色成分存儲爲0-255之間的數字,但「打包」成一個整數。這是我的ASCII藝術,二進制,每個整數32位,顯示Alpha,Red,Green和Blue各8位。垂直讀取位數!我是從1開始編號,而不是0。(另外,你可以說,數字走偏方向 - 它們的存在只是爲了幫你算)
11111111112222222222333
123456789
AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB the pixel value
的pixel >> 16
將結果向右移位16位位。實際上,這將刪除G和B的東西
AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB move everything 16 to the right, this becomes
----------------AAAAAAAARRRRRRRR
其中 - 取決於符號。你可以查看它,但在這種情況下,它並不重要。
所以,你有你的紅色號碼,差不多。還有阿爾法分量,所有AA ....如果掩模(「和」)爲0xFF,這是最低的8位
----------------AAAAAAAARRRRRRRR (result of the bit shift)
00000000000000000000000011111111 (0xFF)
you get
000000000000000000000000RRRRRRRR
這是期望的結果,0和255之間的數。
& - 位AND運算符
> > - 向右移位運算符 - 一個位模式右移
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
例如
4二進制100,如果執行>> 1,這將是010,其是2-
在二進制1000 8,如果做>> 1,這將是0100,其是4
也
What are bitwise shift (bit-shift) operators and how do they work?
看到我忘了寫你好或某事像的方式。大家好 !:) – user2908225
你可以在這裏找到java中的每個運算符:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html它是按位和btw。 – zeller
@user不要擔心,這裏跳過這種愉悅是正常的。 –