トップ «前の日記(2015-05-02(Sat)) 最新 次の日記(2015-05-11(Mon))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2015-05-10(Sun) いい天気。でも席がよくない

NANDげーと

買った本(さてどこまで読めるか...)に触発された。
pythonで書いてみた。

>>> def nand(a, b):
...   if a == b == 1:
...     return 0
...   else:
...     return 1

まずNOT。

>>> x = 0
>>> nand(x, x)
1
>>> x = 1
>>> nand(x, x)
0

それにAND。

>>> x = y = 1
>>> nand(nand(x,y), nand(x, y))
1
>>> x = y = 0
>>> nand(nand(x,y), nand(x, y))
0
>>> x = 1; y = 0
>>> nand(nand(x,y), nand(x, y))
0
>>> x = 0; y = 1
>>> nand(nand(x,y), nand(x, y))
0

上のANDにはNANDを3つ使ってるように見えるが、2つでも同じみたい。

>>> def andgate(a, b):
...   temp = nand(a, b)
...   return nand(temp, temp)
>>> andgate(1,1)
1
>>> andgate(1,0)
0
>>> andgate(0,1)
0
>>> andgate(0,0)
0

他色々

適当に試して、Equivalence(等価?)ができた。

def notgate(x):
  return nand(x, x)
 
>>> x = y = 1
>>> andgate(nand(notgate(x), y) ,nand(x, notgate(y)))
1
>>> x = y = 0
>>> andgate(nand(notgate(x), y) ,nand(x, notgate(y)))
1
>>> x = 0; y = 1
>>> andgate(nand(notgate(x), y) ,nand(x, notgate(y)))
0
>>> x = 1; y = 0
>>> andgate(nand(notgate(x), y) ,nand(x, notgate(y)))
0

論理和はどうしようか。検索結果のひきうつしはやめておきたい。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。