Java 中的按位零填充右移零运算符是什么?
本文将帮助您了解 Java 中的按位零填充右移零运算符。请注意,按位零填充右移零运算符与按位零填充右移运算符相同。在了解右移运算符之前,让我们回顾一下运算符。
运算符
在计算机编程中,我们经常需要执行一些算术或逻辑运算。在这种情况下,我们需要运算符来执行这些任务。因此,运算符基本上是一个符号或标记,它执行算术或逻辑运算并给我们有意义的结果。运算中涉及的值称为操作数。
在本文中,我们将讨论一种类型的按位运算符,所以让我们直接进入主题。
按位运算符
运算符 | 含义 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
! | 按位非 |
~ | 按位补码 |
<< | 按位左移 |
>> | 按位右移 |
>>> | 按位零填充右移 |
<<= | 按位左移赋值 |
>>= | 按位右移赋值 |
>>>= | 按位零填充右移赋值 |
本文是关于按位零填充右移运算符的,所以让我们直接进入主题。
零填充右移运算符
此运算符将所有位向右移动指定数量的位。右移和零填充右移之间的区别在于,右移保留符号位(即,如果 a = -8,则 a >> 2 将为负数),而零填充右移不考虑符号位(即,如果 a = -8,则 a >>> 2 将为正数)。
您可能会好奇,当数字为负数时,零填充右移运算符是如何工作的?答案是,如果 N 是要右移的位数,则多余的位将向右移动 N 个位置并被丢弃,而零位将从左侧移入 N 个位置并被保留。符号位变为 0,因此结果始终为正。
语法 数字 >>>(要移动的位置数)。
例如 - 我们将对 1011(11)执行 1 位的零填充右移。
步骤 1 - 右移前
1 | 0 | 1 | 1 |
步骤 2 - 右移后
0 | 1 | 0 | 1 | 1 |
最右边的位是丢弃的位,而最左边的位是替换位。
因此,新数字为 0101(5)。
让我们再看一个例子,我们将对 -5(二进制为 11111111111111111111111111111011)执行 2 位的零填充右移。
步骤 1 - 右移前
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
步骤 2 - 右移后,最后 2 位(11)将被丢弃,并在左侧插入两个零,它们是替换位。
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
现在新数字是 1073741822,它是正数。
示例
下面是将显示所有上述示例的代码。
public class ZeroFillRightShiftOperator { // public class declaration public static void main(String[] args) { // main function declaration // initializing variables int a = 11; // Binary Number 01011 int b = -5; // Binary Number 11111111111111111111111111111011 // Example 1 where we Zero Fill Right Shifted Number 11 by 1 digit and got Number 5 as output int result_1 = a >>> 1; // Right Shifting 11 by 1 digit // Expected outcome 00101 = 5 System.out.println(" Zero Fill Right Shift of 11 by 1 digit is = " + result_1); // displaying result // Example 2 where we Zero Fill Right Shifted Number -5 by 2 digits and got Number 1073741822 as output int result_2 = b >>> 2; // Right Shifting -5 by 2 digits // Expected outcome 00111111111111111111111111111110 = 1073741822 System.out.println(" Zero Fill Right Shift of -5 by 2 digits is = " + result_2); // displaying result } }
输出
Zero Fill Right Shift of 11 by 1 digit is = 5 Zero Fill Right Shift of -5 by 2 digits is = 1073741822
广告