Java 中的左移运算符


编程语言中指令的执行涉及到各种被称为“运算符”的符号的操作。运算符告诉计算机在整个代码集中应执行什么操作/值评估。基于算术的运算包括执行基本的计算,如加法/减法/乘法/除法。通过关系运算符执行,这些运算符指示任意两个值之间的交互,并分析一个值相对于另一个值何时更大/等于/更小 - 在特定条件下显示其相关性。逻辑运算符的主要作用通常包括将不同的质量语句合并为有意义的论点,无论是基于开发人员意图的真/假语句标准,还是有效地使用所有三种必不可少的运算符类型。

Java 中的左移运算符

Java 是一种强大的语言,提供了广泛的运算符,其中之一是左移运算符,它在将数字左移一定数量的位置方面发挥着重要作用。此运算符不仅用于移位数字,还可以用于移位字符串,这意味着它允许更复杂的操作。由于不同的语言采用不同的移位操作和行为,因此识别移位概念如何在 Java 中应用非常重要。因此,必须了解此运算符的风险和益处。

语法

此运算符的语法如下所示:

X<<n
Here,
x: an integer
n: a non-negative integer

返回值类型

x 左移 n 位后的数字。

异常

当 n 为负数时,输出未定义

表示

十进制表示 - 基数为 10 的数字系统,它只有 0、1、2、3、4、5、6、7、8 和 9 十种状态,用于以十进制形式表示数字。例如,4、10、16 等。

二进制表示 - 使用基数为 2 的数字系统,只有 0 和 1 两种状态,以二进制形式表示数字。例如,基数为 9 的十进制数字系统给出 4 的二进制等效值为 100,10 的二进制等效值为 1010,16 的二进制等效值为 10000 等。

左移

左移表示二进制编码中每一位向左移动。

左移是在使用二进制数时必不可少的过程。例如,将数字 5 左移一位得到 10,即 1010。类似地,将 10 左移两位得到 40,即 101000。

但此过程不仅仅是改变数字。从本质上讲,它将每一位向左移动一个位置。因此,引入了如果不只是移位数字就不会出现的更高级别的复杂性和变化。这导致复杂性和粗犷程度的提高,使操作更有趣。

Left shift x by n positions - x*2n

示例

示例 1

// Java program to illustrate the
// working of left shift operator


import java.io.*;


public class example {
   // Main method
   public static void main (String[] args) {
		
      // Number to be shifted
      int x = 5;
		
      // Number of positions
      int n = 1;
		
      // Shifting x by n positions towards left using left shift operator
      int answer = x << n;
		
      // Print the number obtained after shifting x by n positions towards left
      System.out.println("Left shift " + x + " by " + n + " positions: " + answer);
		
      // Number to be shifted
      x = answer;
		
      // Number of positions
      n = 2;
		
      // Shifting x by n positions towards left using left shift operator
      answer = answer << n;
		
      // Print the number obtained after shifting x by n positions towards left
      System.out.println("Left shift " + x + " by " + n + " positions: " + answer);
		
   }
}

输出

Left shift 5 by 1 positions: 10
Left shift 10 by 2 positions: 40

示例 2

// Java program to illustrate the
// working of left shift operator

import java.io.*;

public class example {

   // Main method
   public static void main (String[] args) {
		
      // Number to be shifted
      int x = -2;
		
      // Number of positions
      int n = 1;
		
      // Shifting x by n positions towards
      // left using left shift operator
      int answer = x << n;
		
      // Print the number obtained after shifting x by n positions towards left
      System.out.println("Left shift " + x + " by " + n + " positions: " + answer);
		
      // Number to be shifted
      x = answer;
		
      // Number of positions
      n = 2;
		
      // Shifting x by n positions towards
      // left using left shift operator
      answer = answer << n;
		
      // Print the number obtained after shifting x by n positions towards left
      System.out.println("Left shift " + x + " by " + n + " positions: " + answer);
		
	}
}

输出

Left shift -2 by 1 positions: -4
Left shift -4 by 2 positions: -16
  • 时间复杂度 - O(1)

  • 空间复杂度 - O(1)

注意 - 执行算术左移需要用 0 填充最右边的空位,因为这不会改变数字的符号,这意味着在移位过程中不考虑符号位。这意味着这种类型的左移与逻辑(无符号)左移具有相同的结果,从而无需单独的无符号移位运算符。

结论

运算符表示编码中使用的关键符号或字符,以指示应执行什么过程。通常分为三大类 - 算术、关系和逻辑 - 每类在编程操作中都发挥着至关重要的作用。其中一个例子是左移运算符,它在将数字左移指定数量的位置以及处理字符串上更复杂的任务方面被证明是有价值的。

更新于: 2023年8月1日

805 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始
广告