2014-04-08 93 views
1

有人可以解释我为什么System.out.println((12 & 9));需要打印8吗?Java“&”运算符

我不明白&运算符在这种情况下的逻辑。

谢谢!

+1

&是一个按位运算符。 –

+1

https://en.wikipedia.org/wiki/Bitwise_operation#AND –

回答

8
It is Binary representation. (Machine Understandable language) 
Here first place resembles value - 1 (Right to Left) 
Second place resembles value - 2 (Right to Left) 
Third place resembles value - 4 (Right to Left) 
Fourth place resembles value - 8 (Right to Left) 

&说1和1为真(即,1),组合的其余都是假的(即,0)

 12 - 1100 
     9 - 1001 
=============== 
     8 - 1000 
18

它是二元的。

12是1100和9是1001

应用逻辑 “与” 操作员&给出1000,这是8

4

&是逐位AND运算符。

12 = 1100 
9 = 1001 
1100 & 1001 = 1000 
1000 = 8 
1

印刷8所述的逻辑是相同的因为System.out.println((12 + 9));打印21.

操作员比被调用的方法有优先权,所以and操作首先执行任何事情都可以发生。

这里你正在做简单的logical and这将导致8,如下:

12110091001

&操作将导致1000。 其中1000是8.