通常位運算包括:位邏輯運算,移位運算。
位邏輯運算:
按位非:~
按位與:&
按位或:|
按位異或:^
移位運算:
左移動:<< java中的最高位爲符號位,移位注意最高位被佔用。
右移動:>>最高位符號位保存不變
右移動用0填充:>>>最高位用0填充
按位非:~常用於求正值的負數或負值的正數。
eg:
int a = 9;
int b = ~a + 1;
b == -9;
按位與:
(1)可以用於清零 10100111 & 00000000
(2)可以取其中的位:10100111 & 00001111
按位或:
(1)將某些位固定爲1
按位異或:
(1)特定位翻轉 10001110^00001111 == 10000001
(2)保留原值
(3)交換兩個值 a = a^b;b = a^b;a = a^b;
運算符優先級:
~ < 算術運算符 < & < ^ < |
eg:
int n = 7;
n<<=3;
n = n&n+1|n+2^n+3;
n>>=2;
結果:n=14
n&n+1|n+2^n+3 =(n&(n+1))|((n+2)^(n+3))