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

标签 java bit-manipulation bit

我正在阅读一些代码示例,并在 Oracle 网站的 Bitwise and Bit Shift Operators 页面上看到了 &。在我看来,它在解释按位 & 方面做得不太好。我知道它直接对位进行操作,但我只是不确定是什么样的操作,我想知道那个操作是什么。这是我从 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 , 因为只有右数第二位在两者中都是零。

还有^~运算符,分别是按位“Xor”和按位“Not”。最后还有<< , >>>>>移位运算符。


在引擎盖下,123存储为 01111011 00000000 00000000 0000000000000000 00000000 00000000 01111011取决于系统。使用按位运算符,使用哪种表示并不重要,因为两种表示都被视为逻辑数 00000000000000000000000001111011 .去除前导零叶 1111011 .

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

相关文章:

java - 热加载.jar文件: random FileNotFoundException

在 C 中将无符号整数转换为 48 位二进制

javascript - 按位运算在运行时容易失败 typescript

c - 在 C 中获取 float 的位表示

java - 计算 1 位在 java 中的个数

java - 数字总和问题

带有尾部 '.. ' 的 Java 文件 canonicalPath 导致不一致的行为

java - 如何在 webdriver 中导入选择类?

java - 我需要关于 Bit Twiddling 的帮助

c# - 如何使用 C# 从位信息创建 char 数组