在數(shù)字電路的世界中,可以用「通電」代表「真」,用邏輯1表示;「不通電」代表「假」,用邏輯0表示。計(jì)算機(jī)只有「通電」和「不通電」兩種狀態(tài),也就是說(shuō)計(jì)算機(jī)只有2個(gè)數(shù)字可以用:0和1。 0和1有什么用,有了0和1就能做任何事情了嗎?我們這篇就聊聊,0和1到底有多強(qiáng)大。 大家先回憶一下,小時(shí)候是如何認(rèn)識(shí)這個(gè)世界的。 出生后,最先學(xué)會(huì)的單詞是「媽媽」,隨著和周圍的人交流,更多接觸這個(gè)世界后,逐漸認(rèn)識(shí)了各式各樣的東西。 四只腳+一個(gè)平木板的東西被稱為「桌子」、汪汪叫的動(dòng)物是「狗」,有一種看不見摸不著的物質(zhì)是「空氣」。 每一個(gè)物品,每一種現(xiàn)象,都有對(duì)應(yīng)的單詞進(jìn)行描述。不知小時(shí)候的你小腦袋瓜里有沒有過這樣的好奇:「為什么」。為什么桌子被稱為「桌子」而不是別的什么子;為什么用「媽媽」這個(gè)詞表示生下我的那個(gè)女人,而不是別的什么xx;為什么汪汪叫的是「狗」,喵喵叫的是「貓」? 在《百年孤獨(dú)》開篇中,作者馬爾克斯回憶了一個(gè)時(shí)代。這個(gè)世界剛剛出現(xiàn),以至于很多東西缺乏命名,這就有必要親自用手指明這些事物。我才知道,人類賦予這些東西名字時(shí)往往是很隨意的。貓不被叫做狗,狗為什么不被叫做貓,其實(shí)沒有什么理由可言的。 為這些東西起個(gè)名字,或用文字符號(hào)表示,或用聲音符號(hào)表示,其實(shí)就是編碼。 編碼給某個(gè)東西起個(gè)名字說(shuō)出來(lái)是一種編碼,叫做「口語(yǔ)」;用文字寫下來(lái)也是編碼,叫做「書面語(yǔ)」。聾啞人用的編碼叫做「手語(yǔ)」,如下圖,是26個(gè)英文字母的手勢(shì)。 盲人用的編碼叫「盲文」。 手語(yǔ)是不同的動(dòng)作代表不同的含義,盲文也類似,上面圖你可以看到,每個(gè)字母都由6個(gè)圓點(diǎn)表示,有的圓點(diǎn)是黑色的,有的是灰色。 在屏幕上是這樣表示給我們看的,但在實(shí)際的盲文刊物上,黑色大圓點(diǎn)是用特殊的打印機(jī)打印的凸起的點(diǎn),灰色小圓點(diǎn)的位置是平的。 盲人可以用手感覺出來(lái),知道了6個(gè)圓點(diǎn)組合代表什么,他們就可以讀書了: 如果你仔細(xì)觀察,我們上下樓的電梯里就有這樣凸起的點(diǎn),方便盲人乘用電梯: 計(jì)算機(jī)的世界里也有編碼,不像物理世界可以編碼為聲音、動(dòng)作,而是一切事物都被編碼成了數(shù)字。 比如,1967年,美國(guó)發(fā)表了ASCII編碼(美國(guó)信息交換標(biāo)準(zhǔn)代碼,American Standard Code for Information Interchange),大寫字母如下: 下次向你暗戀的女神表白時(shí),不要簡(jiǎn)簡(jiǎn)單單說(shuō)一句「我愛你」,我建議你凸顯一下自己的學(xué)識(shí),用美國(guó)的標(biāo)準(zhǔn)編碼一下。 深情的注視著她,緩緩說(shuō)出下面的數(shù)字:「 73,76,79,86,69,89,79,85 」 她一定會(huì)被你的高學(xué)識(shí)和一點(diǎn)點(diǎn)別有用心的幽默折服,相信我。 除了英文,我國(guó)在1981年發(fā)布了簡(jiǎn)體中文漢字編碼國(guó)家標(biāo)準(zhǔn)GB2312,收錄了7445個(gè)圖形字符,其中包括6763個(gè)漢字。 還有國(guó)際通用對(duì)顏色的編碼: 有了這些編碼約定,不同的計(jì)算機(jī)之間就可以對(duì)話(交換數(shù)據(jù))了。 進(jìn)制對(duì)于查數(shù)這件事,相信大家都和我一樣,最先學(xué)會(huì)從1數(shù)到10,然后是10到100,我們習(xí)慣了逢10進(jìn)1,習(xí)慣了用10的倍數(shù)來(lái)表達(dá)數(shù)量級(jí)。
為什么是10呢?其實(shí)很簡(jiǎn)單,因?yàn)槿祟愑?0個(gè)手指,手指非常便于計(jì)數(shù),逢10進(jìn)1符合我們的思維和行為方式。我們管「逢10進(jìn)1」這樣的規(guī)則叫做「十進(jìn)制」。 可以這樣用十進(jìn)制分解一個(gè)數(shù):
這里的'1000',代表十進(jìn)制的「一千」,即103。 但其實(shí)算算數(shù)也可以不是十進(jìn)制,任意進(jìn)制都可以做計(jì)算,只要一直加一就好了嘛,到了進(jìn)位時(shí),最前面加一位,最后面歸零。 比如五進(jìn)制就是逢5進(jìn)1:
上面是用「五進(jìn)制」來(lái)計(jì)數(shù)的十五個(gè)數(shù),看上去很不習(xí)慣,這里10不讀作「十」,而是讀作「一零」,它代表十進(jìn)制中的「五」。 如果是五進(jìn)制的1234,代表十進(jìn)制的多少呢?
注意,這里的'1000'并不代表的十進(jìn)制的「一千」而是代表53,即十進(jìn)制的「一百二十五」!如果換算成十進(jìn)制,應(yīng)該這樣:
即五進(jìn)制的1234代表的十進(jìn)制是194。 同樣的,二進(jìn)制就更簡(jiǎn)單了:
這是用「二進(jìn)制」來(lái)計(jì)數(shù)的六個(gè)數(shù),跟五進(jìn)制一樣,這里的100不讀作「一百」,而是讀作「一零零」,它表示十進(jìn)制中的「四」。 開篇我們講過,在計(jì)算機(jī)的世界中,只用「通電」和「不通電」兩種狀態(tài),所以,計(jì)算機(jī)只能處理二進(jìn)制的數(shù)據(jù)。 在計(jì)算機(jī)中,英文字符的編碼是這樣的: 漢字的編碼是這樣的: end現(xiàn)在可以用二進(jìn)制給每一種事物編碼了,不論是文字、顏色還是聲音、圖像、動(dòng)作。 還能用門電路進(jìn)行簡(jiǎn)單的邏輯處理。 我隱約覺得,在計(jì)算機(jī)的世界中,編碼,就是硬件與軟件的邊界。 有了編碼,接下來(lái)就要做些算數(shù)運(yùn)算了,下一篇告訴你,計(jì)算機(jī)世界中,其實(shí)1+1是等于0的! |
|
來(lái)自: 漢無(wú)為 > 《計(jì)算機(jī)基礎(chǔ)原文》