很多專業人士從第一次學計算機,就開始接觸二進制,發現書上說的基本都是術語,不是“人話”,馬上暈倒。二進制是什么?什么“逢二進一”,這都不重要,狗屎。只要是人發明的東西,用人話就能講清楚。
咱們就用人話,看看能不能講清楚“二進制”。
咱們穿越啦,回到古代。你在一個烽火台上,我在另一個烽火台上,只要你那邊來敵人,你就點狼煙通知我。這個能懂吧?現在,我想清楚的知道你那兒來了幾個敵人,我好做准備工作。怎么辦呢?很簡單,兩個辦法。
1、你點一次火,再滅掉一次,算是一個敵人,來兩個就點2回,滅兩回。 2、或者你同時點兩堆火。我就知道,是來了兩個敵人。
我去,你說要是敵人來了200個怎么辦?你那邊要么熏死,要么火堆多到足夠自焚了……
朝代在發展,人類在進步。一晃愛迪生來過地球了,他發明燈泡了。
你可以用燈泡“亮”和“滅”來跟我表示這個信息。
如果一個燈泡沒亮,說明沒有敵人。燈泡沒亮,也可以說是狀態0。
如果來了一個敵人,燈泡亮了,我就知道來了1個,這就是狀態1。
問題又來了,還是來了200個敵人……我去,要么你開關200次燈泡,要么准備200個燈泡一起亮。第一個方法燈泡質量也不一定好,再說,你閃那么快,我也數不過來。第二個方法,我數也得數小半天,沒數完,早被敵人沖過來砍死了。還有,200個燈泡,你確定你那兒電費余額夠不?
好在咱們都是聰明人,咱們約定,多安幾個燈炮打暗號。為了不用畫圖,0代表關燈,1代表開燈。
00000000,8個燈全關,放心睡覺,這是狀態0,說明一個敵人沒有,平安無事。(狀態0) 00000001,這說明來了一個敵人,你負責干掉他就行了。(狀態1) 00000010,這是第二個能表示的狀態,咱們給它個編號,叫狀態2,說明來了兩個敵人,也沒啥大事。
接下來,應該是第三種情況了。00000011,這就是第三種情況。咱們不說換算什么的,這種亮燈的方法咱們就叫3(狀態3)。
為了讓咱倆都明白,咱們寫個清單(文章最后)出來。由清單能看出來,如果來了255個敵人,你直接打開8個燈泡,我也就一目了然,准備刀槍就上了。
因為電腦也一樣,只有開和關(通電、斷電)來表示兩種狀態。這就叫“二進制”了。至於2進制怎么計算,也很簡單,比如第一種狀態(1)+第二種狀態(2)=第三種狀態(3)。你看:
00000001 +00000010 --------- =00000011,按表格一找,是3,就是這么簡單。
所以,腦子里別想着10進制和2進制怎么換算,這些臟活兒累活兒,可以電腦去干。你只要記住表格里的“二進制第幾種狀態就是10進制中的幾”就可以了。
還有,磁盤里的2進制,用磁鐵的N極和S極表示1和0,N=0,S=1,把硬盤放大了1000萬倍看看,上面都是小磁鐵,通過硬盤的磁頭識別,再變成電流信號“通”和“斷”來交給CPU處理。
那光盤上也一樣,光盤上是用“長”和“短”的小鏡子來表示1和0。把光放大了1000萬倍看看,上面都是長點和短點,用激光頭一照,根據反光的長度來表示數據。
那數據多了怎么辦?8個編成一組,叫1byte,也就是傳說中的1個字節,是由8個0或1組成的,每個0或1叫1bit。通常,一個英文字母需要8個燈泡表示,一個漢字需要16個燈泡表示。
順便說一下,一下能讓我看清8個燈泡亮沒亮的方法,叫“並行”(8位),用1個燈泡來回開關,妄圖晃瞎我的傳遞數據的方法叫“串行”,也就是一串信號的意思。所以,頻率相同的情況下,“並行”肯定比“串行”快。
想一次能處理的信息越多,就需要越多的“位”數,比如你家CPU是64位的,就相當於一次能傳遞64個燈泡組成的信息。
先講這么多吧,中心思想只有一個“技術課講的好,也很有意思!”
再贈送一個知識點,在EXCEL里可以用公式=DEC2BIN()來換算。
附表:
10進制編號 燈泡表示 狀態 1 00000001 狀態 2 00000010 狀態 3 00000011 狀態 4 00000100 狀態 5 00000101 狀態 6 00000110 狀態 7 00000111 ……(以此類推) 狀態 250 11111010 狀態 251 11111011 狀態 252 11111100 狀態 253 11111101 狀態 254 11111110 狀態 255 11111111
2.從運算的簡易性來說,二進制的運算法則少,運算簡單,使計算機運算器的硬件結構大大簡化(十進制乘法九九口訣有55條公式,而二進制乘法只有四條規則)。
3.從邏輯上講,由於二進制0和1正好和邏輯代碼假和真相對應,有邏輯代數的理論基礎,用二進制表示二值邏輯很自然。
作者:cqan 鏈接:http://www.zhihu.com/question/20830886/answer/28334973 來源:知乎 著作權歸作者所有。
一句話總結:二進制穩定不出差錯,有電阻時為1,沒電阻時為0(計算機用高電平和低電平分別表示1和0,電子電路中高電平是電壓高的狀態,一般記為1,電子電路中低電平是電壓低的狀態,一般記為0),不受電阻誤差的形象。若為十進制則需要設計出十種穩定的狀態,不僅麻煩,而且容易產生差錯(溫度影響電阻,從而電流不穩定),功耗還大。
四個字總結:硬件好做 OR 簡化設計。