两个运营商之间如何运作?

时间:2013-02-28 20:01:34

标签: java php eclipse netbeans logic

我有这个代码,结果为'2'。我用谷歌搜索和搜索书籍,但没有找到帮助我的好答案。

int i = 2;
int j = 3;
int x = i & j;
System.out.println (x);

任何人都可以解释。

5 个答案:

答案 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&&)