C語言:異或


異或運算符"∧"也稱XOR運算符。它的規則是若參加運算的兩個二進位同號,則結果為0(假);異號則為1(真)。即 0∧0=0,0∧1=1, 1^0=1,1∧1=0。

相同為0,不相同為1

運算 說明
0 ^ 0=0,0 ^ 1=1 0異或任何數,其結果=任何數
1 ^ 0=1,1 ^ 1=0 1異或任何數,其結果=任何數取反
x ^ x=0 任何數異或自己,等於把自己置0

 

(1)使特定位翻轉

比如:01111010,想使其低4位翻轉,即1變為0,0變為1。可以將它與00001111進行∧運算,即

                  0111 1010

                  0000 1111

結果:       0111  0101

結果值的低4位正好是原數低4位的翻轉。要使哪幾位翻轉就將與其∧運算的該幾位置為1即可。這是因為原數中值為1的位與1進行∧運算得0,原數中的位值0與1進行∧運算的結果得1。

(2)實現兩個值的交換

通過按位異或運算,可以實現兩個值的交換,而不必使用臨時變量。例如交換兩個整數a=3,b=4的值,可通過下列語句實現:

a=a∧b;
b=b∧a;
a=a∧b;

0011 ---a  =3

0100 ---b  =4

-----------

0111----a  =7

0100----b  =4

-----------

0011-----b  =3

0111------a  ==7

0100----a ==3

#include <stdio.h>
int main()
{
    int a=3,b=4;
    printf("%d,%d\n",a,b);
    a=a^b;
    printf("%d,%d\n",a,b);
    b=b^a;
    printf("%d,%d\n",a,b);
    a=a^b;
    printf("%d,%d\n",a,b);
    getchar();
}

 


免責聲明!

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



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