我有这个代码,结果为'2'。我用谷歌搜索和搜索书籍,但没有找到帮助我的好答案。
int i = 2;
int j = 3;
int x = i & j;
System.out.println (x);
任何人都可以解释。
答案 0 :(得分:4)
在这里,'&'是bitwise and operator。只有在两个操作数中都设置了位,才在结果中设置位:
这是操作:
2: 00000010
& 3: 00000011
-----------
2: 00000010
当然,这里的int是32位,我只显示了最后的8位,但前两位都是这些数字的零。
答案 1 :(得分:3)
这是一个按位操作员。
二进制中的2是'10'。二进制3是'11'。按位&运营商比较它们:
10
&11
--
10
对于两个数字均为1的每一列,它将返回1.在这种情况下,结果为“10”,其中int等于2.
答案 2 :(得分:1)
&安培;是按位AND &安培;&安培;是合乎逻辑的AND。
2& 3正确送达2.
以二进制表示形式表示:
10
11
--
10
答案 3 :(得分:1)
&
是一个按位运算符,其工作方式如下:
0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1
因此2 & 3 = 2
:
2 ==> 00000000000000000000000000000010
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3 ==> 00000000000000000000000000000011
---------
2 ==> 00000000000000000000000000000010
答案 4 :(得分:1)
采取以下示例:
System.out.println(2 & 3);
System.out.println(3 & 4);
System.out.println(8 & 4);
System.out.println(9 & 5);
System.out.println(11 & 7);
// binary representation of above operations
System.out.println(0b10 & 0b11);
System.out.println(0b11 & 0b100);
System.out.println(0b1000 & 0b100);
System.out.println(0b1001 & 0b101);
System.out.println(0b1011 & 0b111);
它们导致输出:
2
0
0
1
3
2
0
0
1
3
然后返回并查看二进制表示并注意结果答案是数字的按位和(而不是逻辑AND&&)