这是一个不使用临时变量和使用移位操作交换两个数字的程序:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a,b,i,j;
clrscr();
printf(“Enter two integers: “);
scanf(“%d%d”,&a,&b);
printf(“a=%d,b=%d\n”,a,b);
for(i = 0; i < 16; i++)
{
if((a & (1 << i)) ^ (b & (1 << i)))
{
a = a ^ (1 << i);
b = b ^ (1 << i);
}
}
printf(“a=%d,b=%d”,a,b);
getch();
return 0;
}
我的问题是 1 在这个程序中的意义是什么?我知道 xoring 的方法如下
a = a^b;
b = a^b;
a = a^b;
但我不知道上面的程序是如何工作的?