编写程序以应用XOR运算两次
提示
如果对变量使用相同的XOR运算两次,则返回变量的原始值。
参考实现代码
#include <stdio.h>
char *to_binary(int n);
int main()
{
int a,x,r;
a = 73;
x = 170;
printf(" %s %3d\n",to_binary(a),a);
printf("^ %s %3d\n",to_binary(x),x);
r = a ^ x;
printf("= %s %3d\n",to_binary(r),r);
printf("^ %s %3d\n",to_binary(x),x);
a = r ^ x;
printf("= %s %3d\n",to_binary(a),a);
return(0);
}
char *to_binary(int n)
{
static char bin[9];
int x;
for(x=0;x<8;x++)
{
bin[x] = n & 0x80 ? '1' : '0';
n <<= 1;
}
bin[x] = '\0';
return(bin);
}
编译和执行上面示例代码,得到以下结果:
hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
01001001 73
^ 10101010 170
= 11100011 227
^ 10101010 170
= 01001001 73