江明涛的博客
java long 的位运算
java long 的位运算

java long 的位运算

Java Long的位运算

在Java中,长整型(Long)是一种整数类型,它可以表示较大的整数范围。位运算是一种对整数的二进制位进行操作的技术,它可以用来快速执行某些数学和逻辑运算。在这篇文章中,我们将探讨Java Long的位运算。

1. 位运算符

Java提供了几种位运算符,用于执行各种位操作。以下是常用的位运算符:

  • & (与):对应位上的两个操作数都为1时,结果为1;否则为0。
  • | (或):对应位上的两个操作数中有一个为1时,结果为1;否则为0。
  • ^ (异或):对应位上的两个操作数相同时,结果为0;否则为1。
  • ~ (取反):对操作数的每个位取反,即0变为1,1变为0。
  • << (左移):将操作数的所有位向左移动指定的位数,用0填充低位。
  • >> (右移):将操作数的所有位向右移动指定的位数,用符号位填充高位。
  • >>> (无符号右移):将操作数的所有位向右移动指定的位数,用0填充高位。

2. 长整型的位运算

Java中的长整型(Long)占据了64个二进制位,因此可以进行各种位运算。下面是一些常见的位运算示例:

2.1 位与运算

位与运算符(&)可以将两个长整型的每个对应位进行与操作。这对于提取长整型中的某些特定位非常有用。例如:


long a = 12L; // 二进制为:0000 1100
long b = 5L; // 二进制为:0000 0101
long result = a & b; // 结果为:0000 0100
System.out.println(result);
// 输出:4

2.2 位或运算

位或运算符(|)可以将两个长整型的每个对应位进行或操作。这对于将某些特定位设为1非常有用。例如:


long a = 12L; // 二进制为:0000 1100
long b = 5L; // 二进制为:0000 0101
long result = a | b; // 结果为:0000 1101
System.out.println(result);
// 输出:13

2.3 位异或运算

位异或运算符(^)可以将两个长整型的每个对应位进行异或操作。这对于进行一些特殊标记或交换变量值非常有用。例如:


long a = 12L; // 二进制为:0000 1100
long b = 5L; // 二进制为:0000 0101
long result = a ^ b; // 结果为:0000 1001
System.out.println(result);
// 输出:9

2.4 左移运算

左移运算符(<<)可以将一个长整型的所有位向左移动指定的位数。对于正数,左移操作会将操作数乘以2的n次方(n为移动的位数);对于负数,左移操作会将操作数除以2的n次方并取整。例如:


long a = 5L; // 二进制为:0000 0101
long result = a << 2; // 结果为:0001 0100
System.out.println(result);
// 输出:20

2.5 右移运算

右移运算符(>>)可以将一个长整型的所有位向右移动指定的位数。对于正数,右移操作会将操作数除以2的n次方并取整;对于负数,右移操作会将操作数除以2的n次方并向负无穷方向取整。例如:


long a = -10L; // 二进制为:1111 1111 1111 1111 1111 1111 1111 0110
long result = a >> 2; // 结果为:1111 1111 1111 1111 1111 1111 1111 1101
System.out.println(result);
// 输出:-3

2.6 无符号右移运算

无符号右移运算符(>>>)可以将一个长整型的所有位向右移动指定的位数,并用0填充高位。无符号右移操作不考虑操作数的正负号,始终将高位补0。例如:


long a = -10L; // 二进制为:1111 1111 1111 1111 1111 1111 1111 0110
long result = a >>> 2; // 结果为:0011 1111 1111 1111 1111 1111 1111 1101
System.out.println(result);
// 输出:1073741821

3. 结论

位运算是Java编程中常用的操作技术之一,它可以对长整型(Long)进行高效的位操作。使用位运算可以对长整型中的特定位进行提取、设置或修改,也可以对长整型进行快速的移位操作。了解和熟悉这些位运算符的使用方法,将为您在Java编程中处理位操作提供便利。

希望本文能对您理解Java Long的位运算有所帮助!