Java中的位运算符

Java 中的位运算符用于执行位操作。在位运算符中,所有十进制值都将转换为二进制值(位序列,即 0100、1100、1000、1001 等)。位运算符将对这些位进行操作,例如将它们向左或向右移动,或将位值从 0 转换为 1 等。

下表显示了不同的 Java 位运算符及其含义。例如,考虑 x = 6 和 y = 8,它们的二进制形式的值为

x = 0110

y = 1000

位运算符含义示例
&ANDX & Y = 0000
|ORX | Y = 1110
^异或X ^ Y = 1110
~补码~X = 00001001(非运算符会将所有 0 转换为 1)。请记住,N 的补码将是 -(N + 1)
<<左移X << 1 = 00001100 (位将向左移动 1 步。如果我们使用 2 或 3,它们将相应地移动)
>>右移Y >> 1 = 00000100

让我们看看此编程语言中位运算符背后的真值表。

xyx & yX | yx ^ y
00000
01011
10011
11110

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);
	}
}
Bitwise Operators Example

此示例中的前三个语句将要求用户输入整数值 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