Java 中的位运算符用于执行位操作。在位运算符中,所有十进制值都将转换为二进制值(位序列,即 0100、1100、1000、1001 等)。位运算符将对这些位进行操作,例如将它们向左或向右移动,或将位值从 0 转换为 1 等。
下表显示了不同的 Java 位运算符及其含义。例如,考虑 x = 6 和 y = 8,它们的二进制形式的值为
x = 0110
y = 1000
| 位运算符 | 含义 | 示例 |
|---|---|---|
| & | AND | X & Y = 0000 |
| | | OR | X | Y = 1110 |
| ^ | 异或 | X ^ Y = 1110 |
| ~ | 补码 | ~X = 00001001(非运算符会将所有 0 转换为 1)。请记住,N 的补码将是 -(N + 1) |
| << | 左移 | X << 1 = 00001100 (位将向左移动 1 步。如果我们使用 2 或 3,它们将相应地移动) |
| >> | 右移 | Y >> 1 = 00000100 |
让我们看看此编程语言中位运算符背后的真值表。
| x | y | x & y | X | y | x ^ y |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
Java 位运算符示例
此示例有助于实际理解位运算符。此程序允许用户输入两个整数变量 a 和 b,我们将使用这两个变量来显示各种操作。
import java.util.Scanner;
public class BitwiseOperators {
private static Scanner sc;
public static void main(String[] args) {
int a, b;
sc = new Scanner(System.in);
System.out.println(" Please Enter two integer Value: ");
a = sc.nextInt();
b = sc.nextInt();
System.out.format(" AND: %d & %d = %d \n", a, b, a & b);
System.out.format(" OR : %d | %d = %d \n", a, b, a | b);
System.out.format(" EXCLUSIVE OR: %d ^ %d = %d \n", a, b, a ^ b);
System.out.format(" NOT : ~%d = %d \n", a, ~a);
System.out.format(" LEFT SHIFT: %d << 1 = %d \n", a, a << 1);
System.out.format(" RIGHT SHIFT: %d >> 1 = %d \n", b, b >> 1);
}
}

此示例中的前三个语句将要求用户输入整数值 a 和 b。接下来,我们将用户输入的值分配给变量。
以下 System.out.format 语句将对 a 和 b 执行表中的所有操作,然后显示输出。
在此 Java 位运算符示例中,我们分配了值 a = 12 和 b = 25。12 的二进制形式为 00001100,25 的二进制形式为 00011001。
让我们看看 Java 的计算。
AND 运算 = a & b
00001100 & 00011001 ==> 00001000 = 8
或运算 = a || b
00001100 || 00011001 ==> 00011101 = 29
接下来,异或运算 = a ^ b
00001100 || 00011001 ==> 00010101 = 21
补码运算 = ~a
如前所述,N 的补码是 -(N + 1)。这意味着 – (12 + 1) = -13
左移 = a << 1
00001100 << 1 = 00011000 = 24
右移 = b >> 1
00011001 >> 1 = 00001100 = 12