2014-03-26 46 views
5
a + b = c 
c - a = b 

確定的,現在反向邏輯運算AND(&)

a & b = c 
c ?? a = b 

哪個操作員替換 「??」 ?
謝謝

+4

'&'是按位運算符,邏輯和運算符是'&&',你在說什麼? –

+1

@餘浩所以現在你知道不清楚的問題經常被提高! – devnull

+0

@devnull;但這個問題顯示了一些研究努力:)。 +1 – haccks

回答

14

沒有這樣的運營商,因爲它會被不明確的,如果它存在:

這樣,讓a = 0, c = 0

我們

a & 0 = c 
a & 1 = c 

那麼,我們應該有

c ?? a = 0 and c ?? a = 1 

,但是一個運算符/函數不能返回兩個給定的值ame輸入/參數。

+0

很好解釋。 – haccks

+0

謝謝你的解釋。這是不可能的 – Phiber

+0

我很高興幫助:) – tinlyx

7

你不能。

0 && 0 == 0 
1 && 0 == 0 

爲了扭轉這一點,你需要一個操作符還給兩個01

(但如果b == 1你當然知道a == c。)

16

這是不可能的。這是因爲a & b是一個有損變革。

您不知道是否有丟失的1位是ab的一部分。

+4

-1?我錯過了什麼?我敢打賭我的工作我在這一項上是正確的... – Bathsheba

+1

這是錯誤的。如果你知道'c'和'a',你可以恢復'b'。 – Paulpro

+3

@Paulpro:我不同意。例如。如果c和a都是零,那麼b可以是任何東西。我保持工作;暫且。 – Bathsheba

0

我在這裏看到一個很大的挑戰,反轉邏輯功能是一個問題,一旦解決將有助於改善軟件測試。

你有一個像(list.Constains( 「文本」)和(則爲list.size()> 0),而不是(B))=真聲明

逆操作員將返回理想解決方案的空間,對於函數(list.Constains(「TEXT」)和(list.Size()> 0)而不是(b))。

讓這樣的過程自動化將允許無縫的代碼覆蓋率改進,並將消除人們從這項工作,我認爲這也是構建AI的潛在步驟。