移位操作是 Java 中非常有用的操作,它可以快速地将二进制数字左移或右移一定位数。这在许多情况下都很有用,例如:
Java 中有三种位移运算符:左移 (<<)、右移 (>>) 和算术右移 (>>>)。
运算符 | 描述 |
---|---|
左移运算符将数字向左移动指定位数,并用 0 填充空出的位。 | |
右移运算符将数字向右移动指定位数,并用符号位(对于负数为 1,对于正数为 0)填充空出的位。 | |
算术右移运算符将数字向右移动指定位数,并用 0 填充空出的位。 |
左移操作符 (<<) 将数字的二进制表示形式向左移动指定位数。这相当于将数字乘以 2 的指定次幂。
例如:
10 << 2
40
(10 2^2)
100 << 1
等于
200
(100 2^1)
右移操作符 (>>) 将数字的二进制表示形式向右移动指定位数。这相当于将数字除以 2 的指定次幂。
例如:
10 >> 2
等于
2
(10 / 2^2)
100 >> 1
等于
50
(100 / 2^1)
算术右移操作符 (>>>) 与右移操作符 (>>) 类似,但它在移动负数时具有不同的行为。
对于负数,算术右移操作符会将符号位(最左边的位)向右移动,从而保持数字的负号。这在用于执行算术运算时非常有用。
例如:
-10 >>> 2
等于
-3
(-10 / 2^2)
-100 >>> 1
等于
-50
(-100 / 2^1)
除了位移运算符,Java 还提供了几个位移方法,可以更方便地处理位操作。
方法 | 描述 |
---|---|
Integer.rotateLeft(int, int)
|
将数字向左旋转指定位数。 |
Integer.rotateRight(int, int)
|
将数字向右旋转指定位数。 |
Long.rotateLeft(long, int)
|
将数字向左旋转指定位数。 |
Long.rotateRight(long, int)
|
将数字向右旋转指定位数。 |
旋转操作与移位操作类似,但它们将数字的二进制表示形式循环移位,而不是将其丢弃。
例如:
Integer.rotateLeft(10, 2)
等于
40
(10 向左旋转 2 位)
Long.rotateRight(100L, 1)
等于
50L
(100 向右旋转 1 位)
以下是使用位移操作执行一些常见操作的示例:
int num = 10;String binary = Integer.toBinaryString(num);System.out.println(binary); // 输出: 1010
int flags = 0;flags |= 1 << 2; // 设置第 3 位
int flags = 7;flags &= ~(1 << 2); // 清除第 3 位
int a = 10;int b = 2;int product = a << 1; // 相当于 a b
位移操作是 Java 中强大的工具,可以用于执行各种操作。通过理解位移运算符和位移方法,您可以充分利用位操作来提高您的代码性能和可读性。
本文地址:https://www.qianwe.com/article/b0f86011142384532dfa.html
上一篇:阿里巴巴Java开发手册阿里巴巴JAVA开发手册...
下一篇:Java常量涵盖final和static关键字命名约定...