C语言中 &和^是怎么回事?

int main(){int a=1,b=2,c=3,x;x=(a^b)&c;printf("%d尀n",x);}这个怎么做的?
2025-01-26 17:17:52
推荐回答(4个)
回答1:

C语言中^与&都是位运算符,^是按位或运算,&是按位和运算。要知道,在计算机实际进行运算时,是把用户输入的数据转化成2进制进行运算的。比如1就会转化为00000001 而2会转化为00000010 ,那么a^b就相当于对这两个二进制数字中每一位都对应进行或运算。例如
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出

回答2:

^是按位或运算,&是按位和运算。要知道,在计算机实际进行运算时,是把用户输入的数据转化成2进制进行运算的。比如1就会转化为00000001 而2会转化为00000010 ,那么a^b就相当于对这两个二进制数字中每一位都对应进行或运算。例如
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出

回答3:

& 是 按位与,两个都是 1 的时候结果为1,否则结果为0
^ 按位异或—— 若参加运算的两个二进制位值相同则为0,否则为1;

回答4:

&按位与,^按位异或