2012-04-23 20 views
5

說實話,我在位操作中生鏽了。
我感興趣的是XOR操作。那麼,我知道它是按位進行的,並且它用於加密,並且我們可以在沒有任何臨時變量的情況下進行交換,但是如果在算法中存在特定的方法,我很感興趣。
我的意思是我對XOR在算法中的實際應用感興趣(例如我們可以用它來找出重複中的獨特元素)。是否存在一個問題模式(或問題的表達形式),人們可以看到使用XOR是要走的路? (與使用二分查找有什麼樣的模式相同?)
是否存在關於與核心算法相關的算法的一些實際應用列表XOR,而不是簡單地使用它。做數學運算速度更快就像我們可以通過2異或算法在算法中的一些實際應用

任何投入使用>>代替鴻溝歡迎

+3

那麼,其他哈希算法(包括非加密算法)在一個地方或另一個地方使用XOR。這是否算得上呢,還是仍然「只是找不到」? – delnan 2012-04-23 19:41:07

+0

我沿着解決問題的最佳途徑跳躍。就像當你試圖在副本中找到唯一的時候,你可以使用哈希表,但可以做到這一點,沒有額外的空間'XOR',因爲重複項被取消了。 – Cratylus 2012-04-23 19:44:27

+5

**網絡上最重要的問題之一,它關閉.... ** – 2013-09-25 09:21:42

回答

8

,在我的腦海裏想出了幾個例子:

觸發位:

int i = 123; 
i ^= (1 << 4); // toggle bit 5 

某種類型的隨機性:

int i = 123; 
for (int k = 0; k < 100; k++) 
{ 
    i = i^(i << 1) + i; 
    System.out.println(i); 
} 

「弱加密「:

int b = 235321; 
int key = 24552; 
int encrypted = b^key; 
int decrypted = encrypted^key; // equals 235321 
+0

這正是我寫「弱」的原因。 – 2012-04-23 19:50:45

+3

順便說一句,最後一個可以擴展到輕鬆加密純文本(你只需要一個編碼)。 *如果密鑰是隨機的並且與輸入一樣長,那麼它實際上是一個[非常好的密碼](http://en.wikipedia.org/wiki/One-time_pad),因爲它不可能被破解(既不知道密鑰也不知道密鑰純文本)。如果密鑰更短(並且因此重複以適合輸入的長度),但它可以很容易被破解(對於專家來說很容易),但唯一剩下的問題是創建一次性密鑰並將其發送給Bob。密碼學很吸引人。 – delnan 2012-04-23 19:51:31