Java 中的位掩碼操作

Zeeshan Afridi 2023年1月30日 2022年5月31日
  1. Java 中的位掩碼操作
  2. Java 中的位運算子
Java 中的位掩碼操作

位掩碼是一些資料的二進位制表示。在位掩碼中,我們認為任何資料都只是一些二進位制數字,如 0 和 1。

我們也可以將這些二進位制數字用作布林值,因為 1 代表0 代表

Java 中的位掩碼操作

位掩碼的另一個定義是以二進位制表示形式視覺化數字或其他資料。有些位是 set,有些是 unset,其中 set 表示 true1unset 表示 false0

假設我們有一個二進位制值 10011。這裡,第 1、第 4 和第 5 位是 sets,而第 2 和第 3 位是 unsets

讓我們通過一個例子來理解位掩碼。假設我們有一組四個字元 {w,x,y,z},我們想要字串的不同表示。

為了建立 4 位 {_ _ _ _} 的掩碼,每個位都為我們提供了我們是否引用該字元的資訊。為了更簡單,二進位制組合 1001 表示 w,z0000 表示空字串,1111 表示 w, x, y, z

現在我們已經瞭解了位和位掩碼,是時候瞭解用於操作位的位運算子了。

Java 中的位運算子

Java 位運算子用於執行位操作。這些運算子可用於任何整數型別,如 short、byte、long、char、int 等。

我們有不同的位運算子。它們中的每一個都用於不同的目的。

這些是:

  1. 按位與 (&)
  2. 按位或 (|)
  3. 位補(~
  4. 按位異或 (^)

Java 中的位與 (&) 運算子

AND 運算子是按位運算子,用 & 表示。它對兩個或多個值進行逐位計算,如果兩個值都為,則返回;否則,

 1(True) & 1(True)  = 1(True)
0(False) & 0(False) = 0(False)
 1(True) & 0(False) = 0(False)
0(False) & 1(True)  = 0(False)

示例程式碼:

package articlecodesinjava;
public class ArticleCodesInJava {
    public static void main(String[] args) {

        int a = 3;
        int b = 4;

        // bitwise AND
        // 0011 & 0100=0000 = 0
        System.out.println("a & b = " + (a & b));
    }
}

輸出:

a & b = 0

Java 中的按位或(|)運算子

OR 運算子也是用| 表示的按位運算子,但它不同於 AND (&) 運算子。當且僅當單個值為時,它才返回;否則,

 1(True) | 1(True)  = 1(True)
0(False) | 0(False) = 0(False)
 1(True) | 0(False) = 1(True)
0(False) | 1(True)  = 1(True)

示例程式碼:

package articlecodesinjava;
public class ArticleCodesInJava {
    public static void main(String[] args) {

        int a = 3;
        int b = 4;

        // bitwise OR
        // 0011 & 0100=0000 = 7
        System.out.println("a | b = " + (a | b));
    }
}

輸出:

a & b = 7

Java 中的按位補碼(~)運算子

按位補碼 (~) 運算子,也稱為 NOT 運算子,可以反轉位模式。它是一元運算子,因為它與單個值一起使用。

假設我們有一個二進位制數 10110,我們想用按位補碼 (~) 運算子來取反。它變成 01001

它將 0 反轉為 1,將 1 反轉為 0。

 ~ 1(True) = 0(False)
~ 0(False) = 1(True)

示例程式碼:

package articlecodesinjava;
public class ArticleCodesInJava {
    public static void main(String[] args) {

        // Initial values
        int a = 3, b;

       // bitwise complement of a
       // a = 011 where b = ~a, b =100
       b = ~a;
       System.out.println("~a = "+ b);
    }
}

輸出:

~a = -4

Java 中的按位異或(^)運算子

Java 按位異或運算子是用^ 表示的二元運算子。

如果輸入的二進位制值都不同,則返回 true。但是,如果輸入值相同(0 或 1),則結果為

 1(True) ^ 1(True)  = 0(False)
0(False) ^ 0(False) = 0(False)
 1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True)  = 1(True)

示例程式碼:

package articlecodesinjava;
public class ArticleCodesInJava {
    public static void main(String[] args) {

        // Initial values
        int a = 3;
        int b = 4;

        // bitwise xor
        // 0011 ^ 0100 = 0111 = 7
        System.out.println("a ^ b = " + (a ^ b));
    }
}

輸出:

a ^ b = 7
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn