Java中的按位和(AND)如何工作?

Anz*_*wur 40 java bit-manipulation bit

我正在阅读一些代码示例,并&在他们的Bitwise和Bit Shift Operators页面上看到了Oracle的网站.在我看来,对于解释按位的工作并没有做得太好&.我明白它直接对该位进行操作,但我不确定是什么样的操作,我想知道该操作是什么.以下是我从Oracle网站上获得的一个示例程序:http://docs.oracle.com/javase/tutorial/displayCode.html?code = http://docs.oracle.com/javase/tutorial/java/nutsandbolts/实例/ BitDemo.java

Mar*_*rot 62

整数表示为存储器中的位序列.对于与人类的交互,计算机必须将其显示为十进制数字,但所有计算都以二进制形式执行.123十进制数存储1111011在内存中.

&操作是按位"与".结果是两个数字都打开的位.1001 & 1100 = 1000因为只有第一位在两者中都打开了.

|操作是按位"或".结果是在任一数字中打开的位.1001 | 1100 = 1101因为只有右边的第二位在两者中都是零.

还有^~运算符,分别是按位"Xor"和按位"不".最后,还有<<,>>>>>移动运营商.


在引擎盖下,123存储为系统01111011 00000000 00000000 0000000000000000 00000000 00000000 01111011根据系统.使用按位运算符,使用哪种表示无关紧要,因为两个表示都被视为逻辑数00000000000000000000000001111011.剥去领先的零叶1111011.

  • 实施细节. (8认同)
  • 它仍然与这个问题无关. (7认同)
  • @Markus我会在没有那个字节顺序的情况下向你投票.请注意,当对寄存器进行操作时(大多数情况下),数字甚至不需要在内存中. (2认同)

Ale*_*x W 9

它是一个二元AND运算符.它执行AND操作,该操作是布尔逻辑的一部分,布尔逻辑通常用于计算中的二进制数.

例如:

0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
Run Code Online (Sandbox Code Playgroud)

您还可以对多位数执行此操作:

01 & 00 = 00
11 & 00 = 00
11 & 01 = 01
1111 & 0101 = 0101
11111111 & 01101101 = 01101101
...
Run Code Online (Sandbox Code Playgroud)