i=1;j=2;k=3; printf("%d",~i&j^k); 结果为1,为什么
6个回答
展开全部
~ ,& ,^是三个位运算符,
~表示对所有位取反,1变0,0变1;
&表示将两个操作数按位相与,两个对应位均为1,则该位相与结果才为1,否则均为0;
^是位异或运算符,两个对应位相同(均为0或者均为1)则异或结果为0,两个对应位一个为0,一个为1,则结果为1
表达式 ~i&j^k 的运算涉及到运算符优先级以及结合性问题,
运算符~,&,^优先级依次降低,按照从左到右的结合顺序运算为:(((~i)&j)^k)
i,j,k 的二进制表示分别为:0001,0010,0011
~i ==~(0001)== 1110;
(~i)&j == 1110 & 0010 ==0010;
((~i)&j)^k == 0010 ^ 0011 ==0001;
0001即为十进制 1
详细的可以找到C语言书中讲运算符的章节学习下
头一次到百度知道回答问题,望采纳。。。。
~表示对所有位取反,1变0,0变1;
&表示将两个操作数按位相与,两个对应位均为1,则该位相与结果才为1,否则均为0;
^是位异或运算符,两个对应位相同(均为0或者均为1)则异或结果为0,两个对应位一个为0,一个为1,则结果为1
表达式 ~i&j^k 的运算涉及到运算符优先级以及结合性问题,
运算符~,&,^优先级依次降低,按照从左到右的结合顺序运算为:(((~i)&j)^k)
i,j,k 的二进制表示分别为:0001,0010,0011
~i ==~(0001)== 1110;
(~i)&j == 1110 & 0010 ==0010;
((~i)&j)^k == 0010 ^ 0011 ==0001;
0001即为十进制 1
详细的可以找到C语言书中讲运算符的章节学习下
头一次到百度知道回答问题,望采纳。。。。
展开全部
1二进制为00000001
2为00000010
3为00000011
~是取反的意思,~i=11111110
&是位与的意思,11111110&00000010=00000010
^是异或的意思,00000010^00000011=00000001=1
2为00000010
3为00000011
~是取反的意思,~i=11111110
&是位与的意思,11111110&00000010=00000010
^是异或的意思,00000010^00000011=00000001=1
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是位运算,结果是这样 ~(取反)001 &(与) 010 ^ (异或)011 (二制制逻辑运算)结果是001;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
~i=0 ~i&j=0 0^k=1
~为按位取反~1=0,~0=1
&按位与,两边为1才为1
^按位异或,两边不同才为1
(|按位或,两边为0才知道为0)
~为按位取反~1=0,~0=1
&按位与,两边为1才为1
^按位异或,两边不同才为1
(|按位或,两边为0才知道为0)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询