有人可以解释一下“&”运营商是否工作过,如下例所示?结果是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();
}
}
答案 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.