異或:
1表達:a^b=a⊕b=aXORb; 既相同爲0,不同爲1;
1^1=0; 1^0=1;
用途:
1、交互兩個數:a=5,b=10,用異或實現交換
程序代碼:
#include<stdio.h>
int main()
{
int a=5;
int b=10;
a=a^b;
b=a^b;
// a=a^b;
printf("%d %d\n",a,b);
return 0;
}
2、因爲電腦的數都是二進制的,所以可以轉化二進制的位數和統計二進制中1或者0是奇數還是偶數。
(1):位反轉
舉例:10001000 在一些情況下,第四位和第五位需要反轉,可以用10001000與00011000進行異或運算。
10001000 ^ 00011000 = 10010000
(2):統計某一位的奇偶數
將某個元素中的每一位逐步異或.
例如a1=1010,則b1=1 ^ 0 ^ 1 ^ 0 = 0,由此可以判斷a中爲1的位數是奇數還是偶數。
例如a2=10110,則b2=1 ^ 0 ^ 1 ^ 1 ^ 0 =1,由此可以判斷a中爲1的位數是奇數還是偶數。
3、找出序列中單個最小的數字:
程序代碼:
#include<stdio.h>
int main()
{
int a,b,c,d,e,f,n,m;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
n=a^b^c^d^e;
printf("%d\n",n);
return 0;
}
擴展:&(與)運算
都是1時結果才爲1;
二進制與運算規則:1&1=1 1&0=0 0&0=0