位運算符、|和||、&和&&的區別


一.位運算符操作的都是整數類型

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;

缺點:同樣是只適用於數值型。

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM