Java教程 – Java按位运算符
按位操作符作用于其操作数的各个位。Java按位运算符可以应用于整数types: long,int,short,char,byte 。
按位运算符列表
下表列出了所有Java按位运算符。
| 运算符 | 结果 |
|---|---|
| ~ | 按位一元NOT |
| & | 按位AND |
| | | 按位或 |
| ^ | 按位异或 |
| >> | 向右移动 |
| >>> | 右移零填充 |
| << | 向左移动 |
| &= | 按位AND分配 |
| |= | 按位OR分配 |
| ^= | 按位异OR分配 |
| >>= | 右移赋值 |
| >>>= | 右移零填充分配 |
| <<= | 向左移位 |
按位运算符分配将赋值与按位运算组合。以下两个语句是等效的:
a = a >> 4; a >>= 4;
以下两个语句是等效的:
a = a | b; a |= b;
以下程序演示了按位运算符分配:
public class Main {
public static void main(String args[]) {
int a = 1;
int b = 2;
int c = 3;
a |= 2;
b >>= 2;
c <<= 2;
a ^= c;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
}
此程序的输出如下所示:

Java左移运算符
左移位算子,<<移位所有位中的一个值到左边一个指定的数字的时间。
它有这种一般形式:
value << num
以下代码移位字节类型变量。
public class Main {
public static void main(String args[]) {
byte a = 64, b;
int i;
i = a << 2;
b = (byte) (a << 2);
System.out.println("Original value of a: " + a);
System.out.println("i and b: " + i + " " + b);
}
}
此程序生成的输出如下所示:

例子
每个左移具有使原始值加倍的效果。以下程序说明了这一点:
public class Main {
public static void main(String args[]) {
int num = 0xFFFFFFF;
for (int i = 0; i < 4; i++) {
num = num << 1;
System.out.println(num);
}
}
}
程序生成以下输出:
Java右移运算符
右移位运算符>> 将值中的所有位向右移a指定次数。
其一般形式如下所示:
value >> num
num 指定要向右移位的位置数。
以下代码段将值 32 向右移两个位置:
public class Main {
public static void main(String[] argv) {
int a = 32;
a = a >> 2;
System.out.println("a is " + a);
}
}
输出:
Java无符号右移
Java无符号,右移运算符,>>> ,始终将零转移到高阶位。
其一般形式如下所示:
value >>> num
num 指定要向右移位的位置数。
以下代码显示如何使用无符号右移。
public class Main {
public static void main(String[] argv) {
int a = -1;
a = a >>> 24;
System.out.println("a is " + a);
}
}
输出:


国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码













