java“&”运算符如何工作?

时间:2013-12-30 18:40:20

标签: java

有人可以解释一下“&”运营商是否工作过,如下例所示?结果是8。 在http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html状态下它是一个按位AND,有人可以解释吗?

 public class JavaApplication6 {

 public void number() {
    int number = 9 & 30;
    System.out.println(number);
}

public static void main(String[] args) {
    JavaApplication6 j = new JavaApplication6();
    j.number();
}

}

2 个答案:

答案 0 :(得分:3)

它是按位AND运算符。它采用两个操作数的二进制表示,并逐位比较它们。当第一个操作数中的位为1且第二个操作数中 1时,结果的相应位变为1,否则变为0。

二进制9是1001,二进制30是11110。

  01001
& 11110
-------
  01000

结果01000是十进制的8。

binary-and运算符就像一个过滤器。它提取您需要的那些位的值,并将所有其他位设置为0。

答案 1 :(得分:2)

  

有人可以解释一下“&”运营商是否工作过,如下例所示?

它内部就是这样。

 0000000000001001  (9)
 0000000000011110  (30)
--------------------
 0000000000001000 = 8 (Result)

在内部,它将每个十进制转换为二进制表示,并执行操作,如果任何位为零,则该位的结果为零。当两个位都为1时,相应的位值为1.