C语言中 &和^是怎么回事?
intmain(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\n",x);}这个怎么做的?...
int main(){
int a=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d\n",x);
}
这个怎么做的? 展开
int a=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d\n",x);
}
这个怎么做的? 展开
4个回答
展开全部
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输出
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出
展开全部
^是按位或运算,&是按位和运算。要知道,在计算机实际进行运算时,是把用户输入的数据转化成2进制进行运算的。比如1就会转化为00000001 而2会转化为00000010 ,那么a^b就相当于对这两个二进制数字中每一位都对应进行或运算。例如
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-03-17
展开全部
& 是 按位与,两个都是 1 的时候结果为1,否则结果为0
^ 按位异或—— 若参加运算的两个二进制位值相同则为0,否则为1;
^ 按位异或—— 若参加运算的两个二进制位值相同则为0,否则为1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&按位与,^按位异或
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询