計算機輸出各類文字,圖片,視頻,程序運行結果等一切東西,看起來是個豐富多彩的世界,然而計算機並不像咱們看到的那樣聰明,它的功能強大得益於人類編寫的程序、軟件。在全部豐富多彩的表象下,一切系統,程序,圖片等都由0和1組成。一張圖片是一串由0和1組成的序列,一個程序也是由0和1組成的一串序列。這種只使用0和1來計數、記錄的方法叫作二進制。與之相對應的,人類使用的是十進制,使用0-9來計數。二進制跟十進制很類似,經過與咱們熟悉的十進制的比較,咱們能夠理解二進制系統的運做。git
當咱們使用十進制計數的時候,當數到9再沒有別的符號來表示第十個時,咱們會在個位上填0,而後在十位上填1,獲得10。當數到99時,沒法用兩位數字表示第一百個數字時,就會在個位和十位上分別填0,在百位上填1,獲得100。如此循環往復,咱們就能夠用0,1,2,3,4,5,6,7,8,9十個符號來表示任何數字。 github
那麼當使用二進制,也即只使用0和1來計數時,每個位權都是2的次方,從低位到高位,從2的零次方開始,依次爲1,2,4,8,16,32,64……把一個二進制數轉換爲十進制數很簡單,如上圖中的二進制數10110,經過1×16+0×8+1×4+1×2+1×0獲得22,二進制數0轉換爲十進制數不變,二進制數1轉換爲十進制數不變,二進制數10轉換爲十進制數爲2,二進制數11轉換爲十進制數爲3。 算法
相似於十進制數的一位數,兩位數,三位數,四位數……來表達一個數有多少位,在計算機應用二進制數時,一位二進制數被叫作一比特(1bit),兩位二進制數就能夠稱爲兩比特(2bits),三位二進制數稱爲三比特(3bits)……爲了簡便,又把八位二進制數(8bits)稱爲一個字節(1Byte)。編碼
人類只是使用十進制數來計數,作數學相關的應用,而二進制就不一樣了,計算機用它來計數、計算,執行指令,存儲東西、程序,表示顏色,顯示圖片、視頻,那麼這是怎麼作到的呢,答案是經過編碼。編碼就是經過一一映射,將兩種毫無關聯的東西聯繫起來,而且用一種東西來表明另外一種東西,這是一種人爲的設計。計算機世界裏最著名的編碼要算ASCII碼了,經過設計,鍵盤上的大部分字母和符號都跟某個八位的二進制數捆綁(映射)在一塊兒,這樣當咱們輸入一些英文時,電腦實際作的倒是把跟這些英文一一對應的二進制數存儲在內存裏或者硬盤上。經過各類不一樣的編碼,電腦僅僅使用0和1就能表明任何東西了。當人類想從電腦中獲得相關信息而且但願可以看得懂時,會有相應的程序來經過解碼(編碼的逆運算)的方式顯示出來。設計
爲何計算機要採用二進制而不是採用人們所熟悉的十進制呢?咱們知道,計算機是由各類電子元器件組成,並由電流驅動的。最先的晶體管只具備兩種狀態,磁盤上的一個存儲點的磁極也具備兩種狀態,磁極的南跟北,電子元器件的電平也具備兩種狀態,高和低,這正好跟二進制的一個位所能表明的狀態所吻合,從物理的角度講,易於元器件的製做,只有兩種狀態,也易於電腦內部清晰的傳遞信息(不容易出錯)。另外,0和1正好對應邏輯上的真和假,用二進制表示二值邏輯很天然。最後,二進制的運算法則較爲簡單,可以簡化電腦硬件結構。cdn
歡迎瀏覽個人我的博客,https://diwugebingren.github.io 視頻