Java 中的按位运算符

2025年3月21日 | 阅读 5 分钟

在 Java 中,位运算符用于执行二进制数字的位级操作。这些运算符通过执行位移、AND、OR、NOT 和 XOR 等操作来修改数字的位。我们将通过示例和程序介绍 Java 中可用的各种位运算符。

Java 位运算符

1. AND (&)

AND 运算符以位方式组合两个整数。如果两个操作数中对应的位都设置为 1,则它会返回一个新数字,其中每位都设置为 1。否则,该位设置为 0。

在此示例中,a 的二进制值为 0011,而 b 的二进制值为 0110。通过对这两个值进行位 AND 操作,得到二进制值 0010,相当于十进制的 2。

2. OR (|)

OR 运算符对两个数字执行按位 OR 操作。如果两个操作数中任何一个的对应位设置为 1,则它会返回一个新数字,其中每位都设置为 1。如果不是,则该位设置为 0。

在此示例中,a 的二进制值为 0011,而 b 的二进制值为 0110。对这两个值执行按位 OR 操作会得到二进制值 0111,相当于十进制的 7。

3. XOR (^)

XOR 运算符对两个数字执行按位异或操作。如果两个操作数中只有一个的对应位设置为 1,则它会返回一个新整数,其中每位都设置为 1。否则,该位设置为 0。

在此示例中,a 的二进制值为 0011,而 b 的二进制值为 0110。对这两个值执行按位 XOR 操作会得到二进制值 0101,相当于十进制的 5。

4. NOT 运算符 (~)

NOT 运算符对单个整数执行按位 NOT 操作。它会生成一个每位都反转的新数字。每个 0 都被替换为 1,每个 1 都被替换为 0。

对该数字执行 NOT 运算符操作会得到二进制值 11111111111111111111111111111100,相当于十进制的 -4。Java 对有符号数使用二进制补码编码,数字的符号由最左边的位表示。此示例中最左边的位是 1,表示负值。

5. 左移 (<<)

左移运算符将数字的位向左移动指定的位数。0 填充右侧的空位。此过程会将数字乘以 2 的指定位置数的幂。

6. 右移 (>>)

右移运算符将整数的位向右移动指定的位数。左侧的空位由符号位填充(正数填 0,负数填 1)。此操作会将整数除以 2 的指定槽数的幂。

在此示例中,a 的二进制值为 11111111111111111111111111111000。将 a 右移两位会得到二进制值 11111111111111111111111111111110,相当于十进制的 -2。

7. 无符号右移运算符 (>>>)

它将整数的位向右移动多位。0 填充左侧的空位。此过程会将整数除以 2 的指定槽数的幂,并丢弃任何余数。

BitwiseOperatorsDemo.java

输出

a & b = 2
a | b = 7
a ^ b = 5
~a = -4
a << 2 = 12
h >>> 2 = 1073741822

解释

在此程序中,我们声明了多个整数变量并执行了位运算。按位 AND、OR 和 XOR 操作分别由 &、| 和 ^ 运算符执行。~ 运算符执行按位 NOT 操作。<< 运算符执行左移操作,>>> 运算符执行无符号右移操作。

我们使用 System.out.println() 函数打印这些操作的结果。如您所见,每个操作的结果都与预期结果一致。

结论

总之,位运算符对于 Java 和其他编程语言的编程至关重要。它们使得对整数和其他原始数据类型执行位运算变得简单快捷。