一.位運算符操作的都是整數類型
1.<<:左移,在一定范圍內向左移動n位,相當於乘以2的n次冪
左移不管是正數還是負數,都是在后面添0;
2.>>:右移,在一定范圍內向右移動n位,相當於除以2的n次冪,
右移的話,正數移動n位,在左邊補n位的0,負數移動n位的話,在左邊補上n位的1;
3.無符號右移:>>>,無論是正數還是負數,空缺位都是用0來補。
4.異或:^:兩者不相同則為1,兩者相同則為0。 A=(A^B)^B
二.|和||、&和&&的區別
1.首先是|和||
共同點:只要有任意一邊的是true,那么結果就是true,當兩邊都是false的時候,結果是false
不同點:|是兩邊都會運算,然后來判斷結果;||是先運算左邊的式子,如果為true,那么直接返回結果為true,如果左邊的式子不為true,再去運算右邊式子
2.&和&&
相同點:運算符的兩邊都是true的時候,結果才是true;
不同點:&是兩邊都會運算,然后來判斷結果;&&是先運算左邊的式子,如果是false,直接返回結果為false,否則再去運算右邊的式子,如果是true結果就是true,如果是false,結果就是false;
三. 練習
題目:交換兩個變量的值
方式一:定義臨時變量
int temp = num1;
num1 = num2;
num2 = temp;
方式二:不能定義臨時變量
就像是在一片大海上,有兩塊浮冰,每塊浮冰只能讓一個人站立,現在每塊浮冰上面站着一個人,現在想要讓他們交換一下位置。可以先讓A騎到B 的頭上,然后讓A在踏上之前B站立的浮冰上,此時B在踏上剛才A站立的浮冰上。
num1 = num1+num2;
num2 = num1-num2;
num1 = num1-num2;
優點:可以不用定義臨時變量;
缺點:num1+num2可能超出數值范圍、只適用於數值型
方式三:使用位運算符
因為A=(A^B)^B,所以
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;
缺點:同樣是只適用於數值型。