十進制和二進制的運算---我所理解到的人類的運算的本質


數,存在於宇宙的各個角落,不管有沒有人類的存在,它都存在。只是在於有沒有被我們發現。還好,人類發展至今,發現了各種數:自然數、分數、實數、虛數等。我們今天來說下自然數里的基本運算,也就是我們小學一二年級里學的四則運算:加減乘除。想想我們的學習過程:首先掰手指數數、識數、數的組合和拆分、10以內的加減法、100以內的加減發、乘法和除法。老師不斷的講解,我們不斷的練習、考試、口算、背乘法表等,這一切為了什么。為的是給我們今后的學習打下基礎。這個基礎就是10進制數的數列表、加法表、乘法表,讓這些表深深的存儲在我們的腦海里。善於學習的人,他們還存儲了減法表和除法表。所以當我們人類進行四則運算時,我們大腦其實是在不停的查表,在這五張表里交叉查詢,靈活運用,完成運算得出結果。

一、十進制的運算

我以我們最熟悉的十進制數來舉例,首先我們建立20以內的一個自然數列:

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19

在數列里完成加法:4+7,以4為起點,從0開始計數查表,往右走7步是11,所以我們得出4+7=11;

在數列里完成減法:18-6,以18為起點,從0開始計數查表,往左走6步是12,所以我們得出18-6=12;

在數列里完成乘法:2X7,由於0乘任何數都等於0,所以我們從1開始,2個數一步進往右查7次是14,所以我們得出2*7=14;

在數列里完成除法:在單純的自然數列里,我沒右找到除法怎么查表,應該是無法完成,聰明的你想到了告訴我。

 

如上,只是在單純的自然數列里,做四則運算有如下缺點:

  • 當數過大時,太麻煩,效率不高
  • 無法完成除法

我們聰明的大腦在我們認真的學些的過程中,建立了兩個表:加發表和乘法表

  • 加法表

    用加法表做加法:4+7,直接在上表,橫向找到4,縱向找到7,查表得11,所以4+7=11

    用加法表做減法:18-6,橫向找到6,在這一列,縱向找到18,在往左找到18對應的開始一列的單元格的值是12,所以18-6=12

  • 乘法表


    用乘法表來做乘法:2X7,直接在上表,橫向找到2,縱向找到7,查表得14,所以2X7=14。
    用乘法表來做除法:24/6,橫向找到6,在這一列,縱向找到24,在往左找到24對應的開始一列的單元格的值是4,所以24/6=4。

可以看到,我們只用加法表和乘法表就能完成四則運算,也效率較高,特別是數值較大時比第一種優勢較大。誰打腦海里的表大,內容豐富,誰就會計算得快。但這種方式也是有缺陷的,那就是數是無窮的,也就是這表是無窮大,誰也不可能存儲完整的表,因為這本身就是不可能完成的任務,聰明的人類其實是這樣做的:由於人類記憶有限,而數是無窮的,對普通人,我們采取的是按位分步計算,這樣一來,我們只需存儲10以內的表了,然后記住進位/借位規則就能快速正確的計算。如下圖:

 

二、二進制運算

上面講了,我們最熟悉的十進制四則運算,現在獎下我們程序員最熟悉的二進制數,他們是怎么運算的呢。其實是跟十進制一模一樣的,都是查表,只是我們絕大多數人對它不熟悉,或者沒用過,不了解,但我們程序員是一定要建立起對應的加發表和乘法表,方便我們處理工作種的問題。我們以加發表舉例。

  • 加法表


    做加法:10+11,橫向找到10,縱向找到11,查表得101,所以10+11=101。
    做減法:1011-101,橫向找到101,在這一列,縱向找到1011,在往左找到1011對應的開始一列的單元格的值是110,所以1011-101=110

乘法除法我就不舉例,大家可以看到二進制跟十進制算法一模一樣,只是我們別的進制的不熟悉而已。

三、總結

  • 運算快的人,其實就是建立的表多、表大、內容豐富
  • 查表是我們人類與生俱來的本能
  • 不同進制的四則運算其實就是查表,也證明了不同進制是各自成體系,且具備系統完備性
  • 在我們計算機編程里,查表是最基礎的算法,它的特性就是以存儲空間換時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM