昨天探討了關(guān)于計(jì)算機(jī)是怎樣一步步被人類不斷推進(jìn)演變的過程,今天,我們將從抽象層面帶大家感受一下計(jì)算機(jī)復(fù)雜的一面。
從昨天講的,我們可以發(fā)現(xiàn)不論是通過裝置上的一個(gè)單位,還是通過晶體管控制開關(guān),計(jì)算機(jī)給我們的狀態(tài)只有“開”和“關(guān)”,雖然只有兩個(gè)狀態(tài),但是我們?nèi)匀豢梢杂眠@兩種狀態(tài)表達(dá)很多重要的信息,這就是所謂的“二進(jìn)制”。
你是不是很疑惑:既然二進(jìn)制只有兩個(gè)狀態(tài),那它肯定不能完成很復(fù)雜的工作咯?
答案是:是的,但是它卻可以準(zhǔn)確的表示你需要的值:‘true’和‘false’。
在計(jì)算機(jī)中,狀態(tài)為“開”時(shí),電流流過,用true表示;狀態(tài)為“關(guān)”時(shí),電流停止,用false表示。通常情況下,也會(huì)用0和1來表示二進(jìn)制的狀態(tài)。
上篇文章我們講晶體管可以用來控制電流的開啟和關(guān)閉,其實(shí)不然,晶體管還可以用來控制不同的電流水平。
早期某些電子計(jì)算機(jī)是三進(jìn)制或五進(jìn)制,表示他們的狀態(tài)有3種或5種,但問題是:像這種狀態(tài)層級(jí)越多,狀態(tài)之間的區(qū)分也就會(huì)越模糊。
晶體管每秒有數(shù)百萬次的變化,那中間存在的問題也會(huì)變得更加糟糕。
因此,將兩個(gè)信號(hào)放在盡可能遠(yuǎn)的地方,即只使用 "開" 和 "'關(guān)"的狀態(tài),這樣就可以在很多干擾問題種區(qū)分最明顯的信號(hào)問題。
其實(shí)在計(jì)算機(jī)種使用二進(jìn)制還有一個(gè)原因,那就是二進(jìn)制在數(shù)學(xué)中有成熟的分支,它是專門用來處理‘true’和‘false’的問題,而且數(shù)學(xué)家們也已經(jīng)研究出了操作二進(jìn)制的所有必要的規(guī)則和方法,這個(gè)分支被稱為“布爾代數(shù)”。
“布爾代數(shù)”來源于一位19世紀(jì)自學(xué)數(shù)學(xué)的英國(guó)數(shù)學(xué)家 'George Boole' ,他致力于研究亞里士多德的邏輯理論,亞里士多德邏輯法是以哲學(xué)為基礎(chǔ),Boole的方法則是使用邏輯方程式的方法去判斷真假,這一方法在1847年他的第一本書《邏輯的數(shù)學(xué)分析》中提出。
通常我們學(xué)習(xí)到的都是常規(guī)代數(shù),變量為數(shù)字,并對(duì)這些數(shù)字進(jìn)行加減乘除等運(yùn)算,但在布爾代數(shù)中,變量為‘true’和‘false’,并對(duì)這些變量進(jìn)行邏輯處理。
布爾代數(shù)中的三個(gè)基本操作:“非”、“與”、“或”,這些操作都有他們自己獨(dú)特的作用。
“非(NOT)”作用于單個(gè)布爾值,無論其是true或false,都會(huì)將其反轉(zhuǎn),即true轉(zhuǎn)換為false,false轉(zhuǎn)換為true。
在布爾值中,當(dāng)輸入為true時(shí),輸出為true;當(dāng)輸入false時(shí),輸出false,它并沒有進(jìn)行任何操作。
如果我們對(duì)其稍作修改,例如創(chuàng)建一個(gè)“非”電路,如果輸入true,則輸出為false;如果輸入false時(shí),輸出將會(huì)是true,我們將剛剛創(chuàng)建的“非”電路稱為“非”門。
“與(AND)”作用于最少兩個(gè)輸入,但是只有一個(gè)輸出。只有當(dāng)所有輸入都為true時(shí),輸出true,但如果輸入有一個(gè)false,那輸出就是false。
最后一個(gè)布爾運(yùn)算為“或(OR)”:只要有一個(gè)輸入為true,那么輸出為true,如果輸入都為false,那輸出就是false。
上面我們對(duì)非、與、或門有了一定的了解,現(xiàn)在我們看看這三種門的表示符號(hào)吧!
標(biāo)準(zhǔn)工程師們使用三角形加小圓點(diǎn)表示非:
一個(gè)D形狀的圖標(biāo)表示與:
一個(gè)像宇宙飛船一樣的圖標(biāo)表示或:
這些圖標(biāo)和思想可以在我們構(gòu)建更大組件的同時(shí),去控制好整體的相對(duì)復(fù)雜度,但是那些晶體管和電路的復(fù)雜依然存在。
舉個(gè)例子:在其他有用的布爾運(yùn)算中有個(gè)被稱之為“異或(XOR)”的方法。
異或和或很像,只是如果輸入都為false,那輸出就是false。只有一種情況下異或會(huì)輸出true,就是當(dāng)一個(gè)輸入為true,另一個(gè)輸入為false時(shí)。
異或門在實(shí)際應(yīng)用中是很必要的,因此工程師們也給了它一個(gè)單獨(dú)的標(biāo)志:一個(gè)帶著笑臉的或門:
最重要的是,我們不需要太過于操心其中各個(gè)邏輯門的構(gòu)成,以及這些門該如何用晶體管去搭建,又或者如何讓這些電子在半導(dǎo)體中流通。
因?yàn)楫?dāng)計(jì)算機(jī)工程師在設(shè)計(jì)處理器時(shí),很少會(huì)考慮晶體管層面是如何工作的,他們通常使用的是更大的區(qū)塊,例如邏輯門,或者由邏輯門組成的更大的組件。
即便你是專業(yè)的程序員,也很少去思考如何直接在物理層面用這些極小的組件去實(shí)現(xiàn)你的程序邏輯。
當(dāng)然,我們也將思考的重心從原始的電子流動(dòng),轉(zhuǎn)移到了用數(shù)據(jù)表示來替代:如true和false,這讓我們的思維方式又一次接近了計(jì)算機(jī)本身。
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
796瀏覽量
41759 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7544瀏覽量
88669 -
晶體管
+關(guān)注
關(guān)注
77文章
9752瀏覽量
138936
原文標(biāo)題:還記得“非”“與”“或”“異或”門的邏輯關(guān)系嗎?
文章出處:【微信號(hào):eda365wx,微信公眾號(hào):EDA365電子論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論