Java 中的右移零填充运算符

2024 年 9 月 10 日 | 阅读 3 分钟

在 Java 中,">>>" 运算符是无符号右移运算符。当使用 Java 中的右移运算符时,数字的位会被移到右边,任何移到最右边之外的位都会被丢弃。从左边移入的位会被设置为零,无论它们原来的值是什么。与用于有符号整数并且会保留符号位的 ">>" 运算符不同,">>>" 运算符用于无符号整数。在 Java 中,">>>" 运算符是“无符号右移运算符”,也称为“零填充右移运算符”。它将所有位向右移动指定的次数,并在最左边的位用零填充。该运算符的使用方法如下:

其中,'x' 是要移位的数值,'n' 是要移位的位数。

与“>>”运算符不同,“>>”是“有符号右移运算符”,由于移位过程中会保留符号位,可能导致负数,而“>>>”运算符用于无符号整数。

使用 ">>>" 运算符

文件名:RightShift1.java

输出

x = -8, y = 1073741822

说明:在此示例中,变量 'x' 的初始值为 -8,其二进制表示为 '11111000'。当我们使用 ">>>" 运算符将 'x' 的位向右移动两位时,最左边的位会被用零填充,结果值存储在变量 'y' 中。'y' 的值将是 '00111110' (十进制为 62)

您也可以在 byte 和 short 等其他类型上使用此运算符,但必须先将其强制转换为 int。

另外,需要注意的是,此运算符对于处理无符号整数(即永远不会是负数的整数)很有用。

文件名:RightShift2.java

输出

Original number: -5
After right shift zero fill: 1073741822

说明:在此示例中,变量 'num' 初始化值为 -5。当我们对该变量使用 ">>> 2" 运算符时,它会将数字的所有位向右移动两位,并在最左边的位用零填充。因此,'shiftRightZeroFill' 的新值将是 1073741819。

需要注意的是,">>>" 运算符仅适用于非负整数。如果您尝试对其使用负数,它将被通过取其二补码表示形式来转换为正数。


下一个主题Java 中的静态块