以下は、一時変数とシフト操作を使用せずに 2 つの数値を交換するプログラムです。
#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;
しかし、上記のプログラムがどのように機能するかわかりませんか?