首頁 > Java > java教程 > 了解 XOR 運算子:計算中的強大工具

了解 XOR 運算子:計算中的強大工具

DDD
發布: 2025-01-06 20:16:41
原創
907 人瀏覽過

Understanding the XOR Operator: A Powerful Tool in Computing

異或運算子異或的縮寫,是電腦科學、數學和數位邏輯中的基本概念。 XOR 是一種邏輯運算,在許多程式語言中以符號 ^ 表示,在數學符號中以 ⊕ 表示,廣泛應用於密碼學、資料結構和演算法等各種應用中。這篇文章將探討 XOR 運算子的工作原理、其屬性和實際應用。


什麼是異或?

XOR 運算子比較兩個二元輸入,如果輸入不同,則回傳true (1) false (0)如果輸入是相同。可以用一個簡單的真值表來概括:

Input A Input B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

異或運算子通常被稱為異或,因為當一個輸入為真時,它只傳回真,但不是兩個輸入都為真。


異或的關鍵屬性

  1. 身分屬性:

    • 將一個值與 0 進行異或,該值保持不變:
      • A ⊕ 0 = A
  2. 自逆性質:

    • 將一個值與其自身進行異或總是得到 0:
      • A ⊕ A = 0
  3. 交換性:

    • XOR 運算的順序並不重要:
      • A ⊕ B = B ⊕ A
  4. 關聯性:

    • 異或運算可以用任何順序分組:
      • (A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)
  5. 取消:

    • 將一個值與另一個值進行異或,然後再次使用相同的值進行異或可還原原始值:
      • (A ⊕ B) ⊕ B = A

異或的應用

1. 尋找獨特元素

XOR 在程式設計中最常見的應用之一是尋找陣列中每個其他元素出現兩次的唯一元素。

例子:

public int findUnique(int[] nums) {
    int result = 0;
    for (int num : nums) {
        result ^= num; // XOR all elements
    }
    return result; // The unique number remains
}
登入後複製

這是有效的,因為重複的數字會被抵消,例如:x ⊕ x = 0 。


2. 在沒有臨時變數的情況下交換兩個數字

您可以使用 XOR 來交換兩個數字,而不需要額外的變數:

例子:

int a = 5, b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a: " + a + ", b: " + b); // Output: a: 10, b: 5
登入後複製

以下是它的逐步運作方式:

  1. a = a ^ b → 將 a 和 b 的 XOR 值儲存在 a 中。
  2. b = a ^ b → 再次透過異或將 a 恢復為 b。
  3. a = a ^ b → 再經由異或將 b 恢復為 a。

3. 位元操作與密碼學

XOR 運算子在密碼學中大量使用,用於將明文與金鑰組合以產生密文。由於XOR是可逆的(A ⊕ B) ⊕ B = A,因此保證了安全的加密和解密。

例子:

// Simple XOR Encryption
public String xorEncrypt(String message, char key) {
    char[] encrypted = new char[message.length()];
    for (int i = 0; i < message.length(); i++) {
        encrypted[i] = (char) (message.charAt(i) ^ key);
    }
    return new String(encrypted);
}
登入後複製

4. 找不同

LeetCode 上的這個問題。
您可以使用 XOR 來解決問題。

想像一下,您有 2 個字串,例如 s = "abcd" 和 t = "abcde" 並傳回它們之間的差值。

public char findTheDifference(String s, String t) {
        char result = 0;
        for (int i = 0; i < s.length(); i++) {
            result ^= s.charAt(i);
        }
        for (int i = 0; i < t.length(); i++) {
            result ^= t.charAt(i);
        }
        return result;
    }
登入後複製

為什麼要使用異或?

XOR 非常高效,需要最少的運算資源。它在位元級別運行,比許多替代方法更快地完成加密、錯誤檢測等任務。其獨特的屬性使其成為解決計算中各種問題的多功能工具。


概括

異或運算子是計算和數學中強大且多功能的工具。透過了解其屬性和應用,您可以利用它來編寫高效的演算法、解決複雜的問題,甚至提高對低階操作的理解。無論您是在最佳化演算法還是探索密碼學,XOR 都是您程式設計工具箱中不可或缺的一部分。


?參考

  • Java 中的異或運算子

?跟我說話

  • 領英
  • Github
  • 投資組合

以上是了解 XOR 運算子:計算中的強大工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板