首頁  >  文章  >  Java  >  Java 中的位元操作

Java 中的位元操作

王林
王林原創
2024-08-30 15:59:40882瀏覽

通常,程式設計師處理 int、float、double、String 等資料類型的變數或 Array、List、ArrayList 等集合。在某些情況下,程式設計師需要更深入地了解位元組和位元層級的數據,以提取和操作資料。 Java 和 C# 等語言可讓您在位元層級操作數據,這表示您可以存取位元組中的特定位元。在本主題中,我們將學習 Java 中的位元操作。

在進行資料壓縮和資料加密時,通常需要 Java 中的位元操作,程式設計師需要在位元層級提取資料以對原始資料進行編碼、解碼或壓縮。我們將在本文後面看到位元操作的許多其他應用。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

Java 支援 3 位元移位和 4 個位元運算子來執行位元層級的運算。這些運算子可用於整數(int、short、long 和 byte)以執行位元層級的操作。

Java 位元和位移運算子

以下是運算子:

Operator Description
& Bitwise AND
| Bitwise OR
~ Bitwise Complement
<< Left Shift
>> Right Shift
^ Bitwise XOR
>>> Unsigned Right Shift

Java 中的位元操作運算子

讓我們更詳細地了解運算子。

1.位元或

這是一個二元運算符,需要2 個操作數,用符號「|」表示」。位元運算子比較兩個運算元的對應位。如果運算元任意一位為1,則輸出為1;如果沒有,則為0。

範例

15 = 00001111(二進位)

27 = 00011011(二進位)
15 和 27 的位元或運算
00001111
|  00011011
___
00011111 = 31(十進位)

Java 程式

public class BitwiseOR {
public static void main(String[] args) {
int operand1 = 15, operand2 = 27, output = operand1 | operand2;
System.out.println(output);
}
}

輸出:

Java 中的位元操作

2.位元與

這也是一個位元運算符,它需要 2 個運算元,用符號「&」表示。以位元運算子比較兩個運算元的對應位。如果操作數位均為 1,則輸出為 1;否則,0。

範例

15 = 00001111(二進位)

27 = 00011011(二進位)
15 與 27 的位元與運算
00001111
|  00011011
___
00001011 = 11(十進位)

Java 程式

public class BitwiseAND {
public static void main(String[] args) {
int operand1 = 15, operand2 = 27, output = operand1 & operand2;
System.out.println(output);
}
}

輸出:

Java 中的位元操作

3.按位補

與我們迄今為止討論的其他兩個運算符不同,它只需要一個操作數並表示符號“~”。此運算子反轉操作數的位元。如果操作數位為 0,則將其轉換為 1,反之亦然。

範例

15 = 00001111(二進位)

15的位元補運算
~ 00001111
___
11110000 = 240(十進位)

Java 程式

public class BitwiseComplement {
public static void main(String[] args) {
int operand= 15, output;
output= ~operand;
System.out.println(output);
}
}

輸出:

Java 中的位元操作

注意:當您執行 Java 程式時,您將得到 -16 作為輸出,而不是 240,因為編譯器顯示該數字的 2 補碼,即二進位數的負數。 任何數的 2 補碼等價於 -(n+1),其中 n 是要計算 2 補碼的數。在我們的例子中,操作數 15 的 2 補碼是 -16,這是程式的輸出。
4.位元異或

位元異或是一個二元運算符,它需要 2 個運算元並用符號「^」表示。此運算子比較兩個運算元的對應位,如果兩個運算元的對應位不同,則輸出 1,否則輸出 0。

位元異或運算子相當於(位元或 + 位元補)

範例

15 = 00001111(二進位)

27 = 00011011(二進位)
15 和 27 的位元異或運算
00001111
^ 00011011
___
00010100 = 20(十進位)

Java 程式

public class BitwiseXor {
public static void main(String[] args) {
int operand1= 15, operand2 = 27, output;
output = operand1 ^ operand2;
System.out.println(output);
}
}

輸出:

Java 中的位元操作

5.帶符號左移

左移位元運算子將位元模式向左移動運算元中指定的一定次數。左移運算子以符號“

範例

123(二進位:01111011)

第123章1 的計算結果為 246(二進位:011110110)
第123章2 的計算結果為 492(二進位:0111101100)
第123章3 的計算結果為 984(二進位:01111011000)

Java 程式

public class LeftShiftOperator {
public static void main(String[] args) {
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
}
}

輸出:

Java 中的位元操作

6.帶符號右移

有符號右移運算子的工作原理與左移運算子完全相同,只是它添加了零位並移至高位。

範例

123(二進位:01111011)

第123話1 的計算結果為 61(二進位:00111101)
第123話2 的計算結果為 30(二進位:00011110)
第123話3 的計算結果為 15(二進位:00001111)

Java 程式

public class RightShiftOperator {
public static void main(String[] args) {
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
}
}

輸出:

Java 中的位元操作

7.無符號右移

右移運算子將零移到最左邊的位置,移動運算元中指定的一定位數。

Java 程式

public class UnSignedRightShiftOperator {
public static void main(String[] args) {
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
}
}

輸出:

Java 中的位元操作

結論 – Java 中的位元操作

現在我們已經到了文章的結尾,讓我們總結一下我們在本文中討論的要點。我們已經了解了什麼是位元操作及其不同的用例。我們也學習了不同類型的位元運算子(位元與、位元或、位元補和位元異或)和位移運算子(有符號左移運算子、有符號右移運算子和無符號右移運算子)以及範例和樣本Java 程式解釋各個運算子。

以上是Java 中的位元操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn