2014-05-16 76 views
0

我得解決一個任務,但無法找到答案:
計算x | y只使用~&
最大允許操作8使用按位運算符〜和&來製作|操作

編輯: 在二進制補碼和32位整數的表示。 右移以算術方式執行。

+4

繪製一些真值表。另外,這不是一個真正的編程問題。這更多的是使用按位運算符語法的邏輯問題。 – bblincoe

+1

如果你沒有和AND可用,你可以使用[NAND](https://en.wikipedia.org/wiki/NAND_logic)邏輯來到任何運營商 – msam

+0

@msam:謝謝你是我的想法的正確食物:) – tk4muffin

回答

5

通過查看x | y真值表您將看到:

0 | 0 = 0 
0 | 1 = 1 
1 | 0 = 1 
1 | 1 = 1 

x | y將1如果兩個xy0。你可以把它轉化爲~(~x & ~y)

~(~0 & ~0) = ~(1 & 1) = ~1 = 0 
~(~0 & ~1) = ~(1 & 0) = ~0 = 1 
~(~1 & ~0) = ~(0 & 1) = ~0 = 1 
~(~1 & ~1) = ~(0 & 0) = ~0 = 1 
2

這已經回答了,但他們並沒有提及德·摩根。德摩根定律認爲〜(〜A &〜B)相當於(A | B)。我的邏輯設計系教授告訴我們,在NOT(〜)是「泡泡」和AND/OR是「符號」的地方,「移動泡泡,改變符號」。 (A | B)移動/分配「氣泡」 - >(A & B) - >更改「符號」 - >(A | B)。

這也起作用,因爲缺乏NOT可以被視爲沒有氣泡。

(A | B) - >加 「氣泡」 - >(A '| B ')' - >更改符號 - >(A' & B ')'

See De Morgan's Laws for some more information