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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP