逸之
前一期我們介紹了各種各樣的進制,比如,最常見的十進制,投票時畫“正”字的五進制,1周7天的七進制,1年12個月的十二進制……
可是,你知道嗎?還有一種我們經(jīng)常聽到,平時卻很少使用的進制,這種進制是電腦們的語言,電腦們在私底下講悄悄話就靠它。它就是二進制。二進制只用0和1兩個數(shù)字就可以表達一切,聽起來是不是非常簡單?但假如你想用二進制做計算,那可就非?!胺慈祟悺绷?。
二進制的來歷
三百多年前的某天夜里,一艘客輪正緩緩駛在寂靜的英吉利海峽,德國哲學(xué)家威廉·萊布尼茨扶著船頭的欄桿仰望星空,他思考著:
白天與黑夜來回交替,太陽下山之后輪到月亮值班,天空與大海遙遙相望;
我從岸上來到海面,又從海面回到岸上;
我有著缺一不可的左手和右手,也體會過快樂和悲傷……
這就是世界和生命的本質(zhì),任何事物都有正反兩面。如果給我數(shù)字1來表示正面,給我數(shù)字0來表示反面,我可以用這兩個數(shù)字講述世間的一切。
他似乎想起了什么,興奮地跑回船艙,翻開之前朋友贈予的那本來自中國的《易經(jīng)》,拍案叫絕:“對!對!長線和短線就相當(dāng)于0和1,這就是我一直在思考的二進制!原來擁有大智慧的中國古人早就悟出來了!”
“反人類”的二進制計算
用十進制的法則推一推,我們就知道二進制是逢“2”就進位。平常我們用十進制數(shù)數(shù),會說0、1、2、3、4、5、6……10。假如我們用二進制數(shù)0~ 10,你知道怎么數(shù)嗎?
別著急,讓我們先來試一試下面這個找規(guī)律的題目吧:0000 0001 0010____0100 0101 0110____1000 1001 1010
開動腦筋,這兩條橫線上應(yīng)該填寫什么數(shù)字呢?其實,這些由0和1組成的數(shù)字正是0~ 10的二進制表示。現(xiàn)在,讓我們一起試著用二進制數(shù)數(shù),從最低位開始:
0是0。
1是1。
到2就需要進位了,最低位歸零,高一位加上1,就成了10。
3就是在10的基礎(chǔ)上加1,即11。
4就是在11的基礎(chǔ)上再加1,最低位滿2,向高位進1后歸零,高位也滿2了,就向更高位進1后歸零,結(jié)果就是100。
依次類推,無窮盡也。
當(dāng)數(shù)比較小的時候.我們可以用這樣的方法推出二進制數(shù),但對于比較大的數(shù),這樣類推下去就有點兒費時了。
這時,我們就需要一個簡便的推法了:對一個全是1的二進制數(shù),從右往左,第1位表示1,第2位表示2,第3位表示4(即2個2),第4位表示8(即2個4),第5位表示16(即2個8)……
發(fā)現(xiàn)了嗎?每一位都是前一位的兩倍。越往高位,數(shù)值增長得越快,第11位就表示1024,第12位表示2048。是不是很有意思呢?
不過,假如我們在生活中突然改用二進制交流,可能會出現(xiàn)下面的情況——
嘿,你知道今年是多少年了嗎?
等等,讓我算一算今年是11111100011年。
上次你跟我借的100元還沒還我。給。
不不,是二進制的100元,換算成十進制是4元。
看來在生活中,比起“反人類”的二進制,還是十進制更便于人們使用呢!
關(guān)于二進制還有個笑話——世界上有10種人,一種是懂二進制的,一種是不懂二進制的。
這個笑話到底是什么意思呢?
哈哈,如果你懂二進制,你就會知道這句話中的“10”代表2,也就是“世界上有2種人”啦。
哈哈,原來如此。所以才說一種是懂二進制的,一種是不懂二進制的!
怎么用二進制與電腦“交流”?
這個問題可不簡單。想要與它交流,就要用它的語言跟它交流。那么,它又是怎么聽懂我們的話的呢?
假如我們想讓電腦做個簡單的加法:4+8。我們得先讓電腦準(zhǔn)備好兩個放加數(shù)的“小盒子”,比如:OO01號盒子和0010號盒子。
為什么要準(zhǔn)備“小盒子”呢?因為電腦的主要工作是搬運數(shù)據(jù)和計算數(shù)據(jù),它從一個個由電子元件組成的“小盒子”里讀取數(shù)據(jù),或者把計算結(jié)果放進去,又或者把一個“小盒子”里的數(shù)據(jù)“倒”到另一個“小盒子”里。
接下來我們要給電腦下命令,怎么讓電腦“聽”懂我們的命令呢?好辦,也用二進制告訴它!先跟電腦約定:聽 到0000號命令,就把數(shù)字放進盒子;聽到1111號命令,就把兩個盒子加起來。
我們先用“人類的語言”把要和電腦交流的話寫出來:
(1) 0000號命令,把4(二進制為0100)放到0001號盒子;
(2) 0000號命令,把8(二進制為1000)放到0010號盒子;
(3) 1111號命令,把0001號盒子和0010號盒子加起來。
人類的語言電腦可聽不懂.我們只要把二進制的部分挑出來交給它就行了:
0000
0100
0001
0000
1000
0010
1111
0001
0010
是不是電腦聽懂了,人卻眼花了?哈哈!