我正在阅读一些代码示例,并在 Oracle 网站的按位和移位运算符页面上发现了一个 &
。在我看来,它并没有很好地解释按位&
。我知道它直接对位进行操作,但我只是不确定是什么样的操作,我想知道该操作是什么。这是我从 Oracle 网站上获取的示例程序:http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/BitDemo.java
最佳答案
整数在内存中表示为位序列。为了与人类交互,计算机必须将其显示为十进制数字,但所有计算都是以二进制形式进行的。 123
十进制存储为 1111011
内存中。
&
运算符是按位“与”。结果是两个数字中都打开的位。 1001 & 1100 = 1000
,因为两者中仅打开了第一位。
|
运算符是按位“或”。结果是任一数字中打开的位。 1001 | 1100 = 1101
,因为两者中只有从右边算起的第二位为零。
还有^
和~
运算符,分别是按位“异或”和按位“非”。最后还有<<
, >>
和>>>
移位运算符。
在幕后,123
存储为 01111011 00000000 00000000 00000000
或00000000 00000000 00000000 01111011
取决于系统。使用按位运算符时,使用哪种表示形式并不重要,因为两种表示形式都被视为逻辑数 00000000000000000000000001111011
。去掉前导零叶子 1111011
。
关于java - Java 中的按位与 (AND) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44261890/