异或算法
异或算法
相同为0,不同为1
异或的数学符号为”⊕” 在计算机中通常用”^”的符号表示 异或略称为XOR、EOR、EX-OR
用途:
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
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 simple blog!