C语言练习题-C语言练习题实例53
题目:学习使用按位异或 ^
。
程序分析:0^0=0;0^1=1;1^0=1;1^1=0。
实例
#include <stdio.h>
int main() {
int a, b;
a = 077; // 八进制表示的数,相当于十进制的 63
b = a ^ 3; // 63 ^ 3 = 60
printf("b 的值为 %d\n", b);
b ^= 7; // 60 ^ 7 = 59
printf("b 的值为 %d\n", b);
return 0;
}
以上实例输出结果为:
b 的值为 60
b 的值为 59
在该程序中,使用按位异或 ^
运算符对变量 a
和 b
进行位运算。
首先,将变量 a
赋值为 077,它是一个八进制数,相当于十进制数的 63。然后,使用 a ^ 3
对变量 a
和 3 进行按位异或运算,结果赋值给变量 b
。因为 3 的二进制表示是 011,而 63 的二进制表示是 111111,所以按位异或运算后的结果是 111100,即十进制的 60。
接着,使用 b ^= 7
对变量 b
和 7 进行按位异或运算,并将结果赋值给变量 b
。因为 7 的二进制表示是 111,而 60 的二进制表示是 111100,所以按位异或运算后的结果是 111011,即十进制的 59。
最后,使用 printf
函数分别输出变量 b
的值,结果分别为 60 和 59。
通过该例子,我们可以了解按位异或 ^
运算符的基本用法,它可以将两个操作数的对应位进行按位异或运算,如果两个位不同,结果位为 1,否则为 0。