不创建临时变量交换两个整数
异或:
相同为0,相异为1
a^a=0,a^0=a
代码:
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("交换前:%d %d\n", a, b);
b = a ^ b;
a = a ^ b;
b = a ^ b;
printf("交换后:%d %d\n",a, b);
return 0;
}
结果:
比较两数二进制位的不同
代码:
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
int count = 0;
scanf("%d %d", &m, &n);
int i = 0;
for (i = 0; i < 32; i++)
{
//比较两数二进制位数
if (((m >> i) & 1) != ((n >> i) & 1))
{
count++;
}
}
printf("%d\n", count);
return 0;
}
结果: