2013-10-06 36 views
-7

我試圖瞭解從昨天我收到的答案代碼:按位或非門 - 什麼意思?

第二:How to make a bitwise NOR gate
1:How to do a bitwise NOR Gate in Python (editing python maths to work for me)

a=0b01100001 
b=0b01100010 

bin((a^0b11111111) & (b^0b11111111)) 

我現在明白,只是一切:

&之間兩個值

^ 11111111(我知道0b是基地2

有人可以解釋這些嗎?

+2

請包括一個鏈接到前面的問題,所以每個人都不必去尋找它。 –

+0

更好的是 - 在這個問題中包含代碼。 – 2013-10-06 13:32:18

+6

它已經解釋http://stackoverflow.com/questions/19197495/how-to-do-a-bitwise-nor-gate-in-python-editing-python-maths-to-work-for-me – stark

回答

1

如何NOR作品?

表達x NOR y可以使用ANDORNOT被打破:

x NOR y == NOT(x OR y) == NOT(x) AND NOT(y) 

因此,對於您給定的值:

a=0b01100001 
b=0b01100010 

a NOR bNOT(a) AND NOT(b)。現在想想你會怎麼做NOT(a)?你只需要翻轉這些位。什麼是翻轉位的方式?一個XOR(^)。怎麼樣?

0^1 == 1 
1^1 == 0 

所以,服用任何位的XOR1將翻轉該位。即NOT(somebit) == a XOR somebit。所以,在你的情況下,只需要每比特的XORab1,會得到NOT

01100001 
^ 11111111 
------------ 
    10011110 

也就是說,我們做11111111XOR。請注意,1's的編號與a中的位編號相同。

將其組合在一起:

NOT(a) = a^0b11111111 
NOT(b) = b^0b11111111 

現在,我們得到了NOT S的ab,讓我們做一個AND。那麼,怎麼辦AND?只需按位&即可。

這是相當簡單:

NOT(a) AND NOT(b) == (a^0b11111111) & (b^0b11111111)