移位運算符
??? 包括:??? “>> 右移”;“<< 左移”;“>>> 無符號右移”
例子:-5>>3=-11111 1111 1111 1111 1111 1111 1111 10111111 1111 1111 1111 1111 1111 1111 1111其結果與 Math.floor((double)-5/(2*2*2)) 完全相同。
-5<<3=-401111 1111 1111 1111 1111 1111 1111 10111111 1111 1111 1111 1111 1111 1101 1000 其結果與 -5*2*2*2 完全相同。
5>>3=00000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 0000其結果與 5/(2*2*2) 完全相同。
5<<3=400000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0010 1000其結果與 5*2*2*2 完全相同。
-5>>>3=536870911????? 1111 1111 1111 1111 1111 1111 1111 10110001 1111 1111 1111 1111 1111 1111 1111
無論正數、負數,它們的右移、左移、無符號右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。一個有趣的現象是,把 1 左移 31 位再右移 31 位,其結果為 -1。0000 0000 0000 0000 0000 0000 0000 00011000 0000 0000 0000 0000 0000 0000 00001111 1111 1111 1111 1111 1111 1111 1111
位邏輯運算符
??? 包括:??? & 與;| 或;~ 非(也叫做求反);^ 異或
??? “& 與”、“| 或”、“~ 非”是基本邏輯運算,由此可以演變出“與非”、“或非”、“與或非”復合邏輯運算。“^ 異或”是一種特殊的邏輯運算,對它求反可以得到“同或”,所以“同或”邏輯也叫“異或非”邏輯。
例子:5&3=10000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0001
-5&3=31111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0011
5|3=70000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0111
-5|3=-51111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 00111111 1111 1111 1111 1111 1111 1111 1011
~5=-60000 0000 0000 0000 0000 0000 0000 01011111 1111 1111 1111 1111 1111 1111 1010
~-5=41111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 0100
5^3=60000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0110
-5^3=-81111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 00111111 1111 1111 1111 1111 1111 1111 1000請注意!引用、轉貼本文應注明原作者:Rosen Jiang 以及出處:http://www.tkk7.com/rosen
Powered by: BlogJava Copyright © Rosen