java - Java 中的按位与 (AND) 是如何工作的?

标签 java bit-manipulation bit

我正在阅读一些代码示例,并在 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 0000000000000000 00000000 00000000 01111011取决于系统。使用按位运算符时,使用哪种表示形式并不重要,因为两种表示形式都被视为逻辑数 00000000000000000000000001111011 。去掉前导零叶子 1111011

关于java - Java 中的按位与 (AND) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44261890/

相关文章:

java - Spring错误创建名称为“org.springframework.aop.config.internalAutoProxyCreator”的bean

java - 如何使用 jFreeChart 确定 StackedBarChart 中 ItemMargin 属性的最小值和最大值

java - 使用与权限模型的按位比较忽略第一位

c - 在 C 中设置一个字节的位

C:访问 uint16_t 数字中的各个位?

java - 某些 Enum[] 值 = 某些 Enum.values() 变量在定义后发生变化?

java - 以选项卡式面板作为树节点的 JTree

c - 如何使用按位运算符?

python - 检查所有位是否为 1 的最佳方法是什么?

c - 位域困惑?