2011-05-29 84 views
0

很簡單,真的。我想否定以2的補碼錶示的整數,爲此,我需要首先翻轉字節中的所有位。我知道XOR很簡單 - 僅使用XOR與位掩碼11111111.但是,如果沒有XOR,該怎麼辦? (即只是AND和OR)。噢,在我用的這種糟糕的彙編語言中,NOT並不存在。所以沒有骰子。位掩碼翻轉位...沒有XOR?

+1

即使是一個「蹩腳的彙編語言」應該有一些做NOT的方法。也許它被稱爲別的東西? – pavium 2011-05-29 01:50:08

+1

如果列出了這個「糟糕的彙編語言」中實際可用的操作,它可能會有所幫助。用AND和OR來做你想做的事是不可能的。 – Nemo 2011-05-29 01:55:20

+0

是的,我很笨。我所要做的只是從0中減去整數...否定它。顯然。 – Asker 2011-06-06 05:42:40

回答

0

請問(foo & ~bar) | (~foo & bar)有竅門嗎?

編輯:哦,不存在。沒有看到那部分!

+0

不幸的是我也沒有得到。 – Asker 2011-05-29 01:41:47

4

你不能用AND和OR門建立NOT門。

正如我被要求解釋,在這裏它很好地格式化。假設您有任何數量的ANDOR大門。你的輸入是A,0和1.你有六種可能性,你可以在三個信號中選出三個(選出一個)和兩個門。現在:

Operation Result 
A AND A A 
A AND 1 A 
A AND 0 0 
A OR A  A 
A OR 1  1 
A OR 0  A 

所以你餵養後您的任何信號到第一門,你的一套新的信號仍然只是一個,0和1。因此,這些門和信號的任意組合,只會讓你A, 0和1.如果你的最終輸出是A,那麼這意味着對於A的兩個值它將不相等!A,如果你的最終輸出是0,那麼A = 0是這樣一個值,以至於你的最終值不是!A同樣爲1.

編輯:單調評論也是正確的!讓我在這裏重複一遍:如果將AND/OR中的任何輸入從0更改爲1,則輸出不會降低。因此,如果你聲稱構建一個NOT門,那麼我將把你的輸入從0改爲1,你的輸出也不能減少,但它應該 - 這是矛盾的。

+0

你認爲你可以解釋爲什麼? – Asker 2011-05-29 01:41:27

+0

但是你可以脫離NAND和NOR門,因爲兩者都是通用門。 – 2011-05-29 01:47:35

+0

爲什麼?那麼,假設你有A,0,1,或者......現在結合起來,你會馬上看到。 A AND A是A,A AND 0是0,A AND 1是A,A OR A是A,A OR 1是1,A OR 0是A.您想要將這些信號與門組合,並獲得A你可以在第一步之後看到你仍然只有A,0,1信號,這是不可能的。 – chx 2011-05-29 01:48:32