前言
關於這款遊戲
-= 你能學到什麼 =-
計算機裡所有的電子元件都可以基於一種叫做“與非門”(NAND gate)的基本元件而實現。在本遊戲中,你將會面對一系列挑戰,在求解謎題的過程中,走出從基礎邏輯門通向算術單元、存儲器等複雜元件的道路,並沿著這條道路最終學習如何搭建完整的處理器架構。完成所有主線關卡後,你將對處理器架構、彙編語言和電子元件彼此之間的具體聯繫產生更加深刻的理解。你也會了解高級編程語言中常見的條件判斷、循環、函數等概念是如何在彙編和硬件層面具體實現的。
-= 你能構建什麼 =-
本遊戲是基於一個強大的電路模擬器而開發的。這個電路模擬器允許你自由發揮想象力,以不同的解法通過各個關卡,或以自己喜歡的方式搭建屬於自己的計算機。你可以隨心所欲地在你的計算機上連接顯示屏、計時器、聲音元件等部件,也可以接收現實生活中的鍵盤和網絡發送的數據。你甚至可以為你自己的計算機設計一套自己專屬的彙編語言。
第一層基礎邏輯電路
01、原力覺醒——輸入輸出
在邏輯代數中,邏輯變量有兩種取值,0和1(分別為假false和真true),僅表兩種不同的狀態。
真true 1
假false 0
02、與非門(NOR)
本關我們可以瞭解與非門的性質,並作出真值表,瞭解真值表是什麼東西。
概念
那麼本關要求是作出 NAND(與非門)的真值表,而 NAND(與非門)是在 AND(與門)運算後對其取反(非)。
那麼大家可以通過上圖與、或、非的真值表來推導下圖的與非門。
答案
03、非門(NOT)
這裡我們可以理解為A與B的輸出一致了,那麼我們只有0 1這兩種輸入了,通過上面的真值表結果也就很明瞭了。
在進入下一關前讓我們先了解一下邏輯代數的基本公式。
這個表瞭解了第一、二層沒難度的
04、與門(AND)
根據基本公式可以知道 A與A的非的非 值為 A與A ,那麼兩值與非的非結果就是兩值的與。
我們可以在邏輯上理解為與非門就是與門的基礎上加上非門,反之亦然。
AND(與門)是全部變量輸入都為1時才輸出1,當有變量為0時輸出0。
本關答案
05、或門(OR)
我們先了解一下德·摩根定律。
根據上圖可知
OR <-> NOR AND <-> NAND是對輸出取反可得,
而OR <-> NAND AND <-> NOR是對輸入取反可得。
本關答案也就可以推導出來了。
OR 或門是全部變量輸入都為0時才輸出0,當有變量為1時就可以輸出1。或門是當有輸入為1時就輸出1
06、或非門(NOR)
即在或門輸出上取非。
07、高電平
數字邏輯電路中高電平只輸出1,低電平只輸出0。
08、第二刻
本關要求只在第二刻輸出1,其他為0,目的是引導我們通過輸出來判斷輸入。
通過表可以理解 輸入1為 1 時,且輸入2 為 0 時 輸出為1, 其他為0。
這裡我們可以直接作出標準邏輯表達式,在這裡我另外開了個帖子,大家可以跳轉去看看,掌握這個方法對後面過關很有幫助。
我們也可以直接去推導,在圖中我們發現唯有當輸入1(這裡開始叫做A)為1,輸入2(這裡開始叫做B)為0時,才輸出1。
即if(A==1&&B==0) return true;
else return false;
我們看到判斷的條件就是A與B的值滿足,那麼我們試著寫出與的條件:
if(A==1&&B==1) return true;
else return false;
因為A與B都是bool型的[只有兩種取值,0和1(false和true)],直接取反就是另外一個值,所以我們可以放一個與門,將 A 以及 B非 來作為與門的輸入即可。
如有什麼錯誤地方歡迎大家指出,或者還有什麼更好解法也歡迎在評論區分享!
如果看不懂的話也歡迎大家在評論區提出問題(我把數制給跳了)
#冷門佳作推薦#