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 填充最右邊的空位,因為這不會改變數字的符號,這意味著在移位過程中不考慮符號位。這意味著這種型別的左移與邏輯(無符號)左移具有相同的結果,從而無需單獨的無符號移位運算子。
結論
運算子表示編碼中使用的關鍵符號或字元,以指示應執行什麼過程。通常分為三大類 - 算術、關係和邏輯 - 每類在程式設計操作中都發揮著至關重要的作用。其中一個例子是左移運算子,它在將數字左移指定數量的位置以及處理字串上更復雜的任務方面被證明是有價值的。