C語言中位運算符異或“∧”的作用


異或運算符∧也稱XOR運算符。它的規則是若參加運算的兩個二進位同號,則結果為0(假);異號則為1(真)。即0∧00011110。如: 即071∧052,結果為023(八進制數)。
“異或”的意思是判斷兩個相應的位值是否為“異”,為“異”(值不同)就取真(1),否則為(0)。
 
  下面舉例說明∧運算符的應用:
  (1)使特定位翻轉
  假設有01111010,想使其低4位翻轉,即1變為0,0變為1。可以將它與00001111進行∧運算,即
  
結果值的低4位正好是原數低4位的翻轉。要使哪幾位翻轉就將與其∧運算的該幾位置為1即可。這是因為原數中值為1的位與1進行∧運算得0,原數中的位值0與1進行∧運算的結果得1。
  (2)與0相∧,保留原值
  如012∧00012
  
因為原數中的1與0進行∧運算得1,0∧0得0,故保留原數。
  (3)交換兩個值,不用臨時變量
  假如a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現:
  a=a∧b;
  b=b∧a;
  a=a∧b;
  可以用下面的豎式來說明:
即等效於以下兩步:
  ① 執行前兩個賦值語句:“a=a∧b;”和“b=b∧a;”相當於b=b∧(a∧b)。而b∧a∧b等於a∧b∧b。b∧b的結果為0,因為同一個數與本身相∧,結果必為0。因此b的值等於a∧0,即a,其值為3。
  ② 再執行第三個賦值語句:a=a∧b。由於a的值等於(a∧b),b的值等於(b∧a∧b),因此,相當於a=a∧b∧b∧a∧b,即a的值等於a∧a∧b∧b∧b,等於b。
  a得到b原來的值。
 
////////////////////////////////////////////////////////////////////////
在【二進制值運算】中:不同為1,相同為0,如1001異或1010等於0011。
異或也叫半加運算,其運算法則相當於不帶進位的二進制加法:二進制下用1表示真,0表示假,則異或的運算法則為:0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進位。
例如:1.不允許創建臨時變量,交換兩個數的內容。
代碼:
#include<stdio.h>
int main()
{
int a=5,b=1;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d\nb=%d\n",a,b);
return 0;
}
運行結果:
a=1
b=5

 


免責聲明!

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



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