吳國平:除了十進位, 人類文明史上還有哪些進位算法?

2021-01-04 吳國平數學教育

當我們看到像1、25、356……這些耳熟能詳的數字,大家都知道這是學習數學的基礎,代表全世界通用的十進位,即滿十進一,滿二十進二,以此類推。

世界通用的十進位,對於現代文明的我們看來是那麼地熟悉自然。在人類文明進程過程中,算法並不是就只有十進位一種,在很多文明體系中出現各種各樣的算法,如二進位、二十進位等等。對於十進位我們已經很熟悉了,但對於像二十進位,滿二十進一等算數很多人並不一定了解。

雖然其他進位算法我們已經很少用到,但這些代表人類文明各種各樣的進位曾經通行於這個世界,有的或已經完全消失在歷史書裡,而有些繼續人類文明發展中得到應用,如二進位在計算機發展中的應用。

因此,我們今天就一起來簡單了解其他進位的算數。

1、二進位算法

這個最簡單,兩個數字便可表示所有數字,雖然在數學中已經失去地位,但卻在計算機領域大放光彩,這正是二進位的簡單所成。

二進位是計算技術中廣泛採用的一種數制。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進位系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進位則是一個非常微小的開關,用「開」來表示1,「關」來表示0。

20世紀被稱作第三次科技革命的重要標誌之一的計算機的發明與應用,因為數字計算機只能識別和處理由『0』.『1』符號串組成的代碼。其運算模式正是二進位。19世紀愛爾蘭邏輯學家喬治布爾對邏輯命題的思考過程轉化為對符號"0''.''1''的某種代數演算,二進位是逢2進位的進位制。0、1是基本算符。因為它只使用0、1兩個數字符號,非常簡單方便,易於用電子方式實現。

二進位最適合懶人的算法,如乘法口訣表就四個:0×0=0,0×1=0,1×0=0,1×1=1。

2、三進位算法

三進位是以3為底數的進位制,三進位數有0、1、2三個數碼,逢三進一。在計算機發展的早期,採用了一種偏置了的三進位(對稱三進位),有-1<一般用T表示>、0、1三個數碼,這種三進位逢+/-2進一。

三進位用得極少,但實際上曾經被看做二進位計算系統的最好替代品,至少在俄羅斯曾經如此,俄羅斯曾經研發過三進位計算機,因為二進位雖然簡單,但實際上並不能代表人類的真實想法,我們對一個問題的認知,除了「對與錯」,還有「不知道」,這種中間狀態就是三進位最大的優勢,但最終,三進位計算機的研究因為種種原因被無限擱置,留下一個悽涼的背影。

3、四進位算法

四進位是以4為底數的進位制,以0、1、2和3四個數字表示任何實數。

四進位與所有固定底數的記數系統有著很多共同的屬性,比如以標準的形式表示任何實數的能力(近乎獨特),以及表示有理數與無理數的特性。有關屬性的討論可參考十進位和二進位。

四進位由於同二進位的緊密聯繫,同八進位、十六進位被廣泛應用於電腦技術和程式設計(來自維基百科)。由於DNA裡的核苷酸有四種,其搭配方式也有四種,所以四進位也用於遺傳學。另外,四進位也用於數據傳輸。

4、五進位算法

五進位是以5為底的進位制,主因乃人類的一隻手有五隻手指。

在五進位中,有五個數字,各是0、1、2、3、4,用來代表各種實數,依此規則,十進位的5,在五進位中為10。

中國古代的五行學說也是採用的五進位,0代表土,1代表水,2代表火,3代表木,4代表金,以此類推,5又屬土,6屬水,減去5即得。

五進位大概是由於其來源於「一雙手的手指數」,同十進位雷同,所以至今仍通行於肯亞和尼日尼亞的約魯巴人民族,不過,已經在慢慢消失。

5、六進位算法

六進位對於研究素數[1]是很有用的,因為所有的素數,除了2和3以外,在六進位下的個位都是1或5。在六進位中,最初的幾個素數為:

(2)6, (3)6, (5)6, (11)6, (15)6, (21)6, (25)6, (31)6, (35)6, (45)6, (51)6, (101)6, (105)6, (111)6, (115)6, (125)6, (135)6, (141)6……也就是說,對於所有除了2和3以外的素數p都有pmod 6=1或pmod 6=5.

另外,除了6以外,所有的偶完全數在六進位中都以44結尾。

六進位相對於其他算法被人用得更少,不過在數論中有其用處,除了2和3以外,所有的素數在六進位中要麼是1結尾,要麼以5結尾,你只需注意到只有6n+1和6n+5形式的數才可能是素數就可以了。另外,所有的完全數在六進位中全部以44結尾。

6、八進位算法

Octal,縮寫OCT或O,一種以8為基數的計數法,採用0,1,2,3,4,5,6,7八個數字,逢八進1。一些程式語言中常常以數字0開始表明該數字是八進位。八進位的數和二進位數可以按位對應(八進位一位對應二進位三位),因此常應用在計算機語言中。

八進位(基數為8)表示法在計算機系統中很常見,因此,我們有時能看到人們使用八進位表示法。由於十六進位一位可以對應4位二進位數字,用十六進位來表示二進位較為方便。因此,八進位的應用不如十六進位。有一些程序設計語言提供了使用八進位符號來表示數字的能力,而且還是有一些比較古老的Unix應用在使用八進位。

計算機需要數制轉換,計算機內部使用二進位,二進位八進位十進位之間的數制轉換,FORTRAN77編制,圍繞二進位與小數,完成二進位八進位十進位之間的數制轉換。

7、十一進位算法

十一進位是以11為底數的記數系統。他需要11個記號表示,通常使用數字0、1、2、3、4、5、6、7、8、9及字母A(或X)。其中,A(或X)即數字10。十一進位中的10代表十進位的11;而十一進位的0.1則代表十進位的1/11。

十一進位在圖書ISBN國際標準書號裡得到應用,其校驗碼就是把書號的加權和同11相除取其餘數,並取11同該餘數的差而得。

8、十二進位算法

十二進位是數學中一種以12為底數的記數系統,通常使用數字0~9以及字母A、B(或X、E)來表示。其中,A(或X)即數字10,B(或E)即數字11。美國速記發明人艾薩克·皮特曼還曾創造過一種標記法,使用翻轉的2和3來表示10和11。十二進位中的10代表十進位的12,也稱為一打。同樣的,十二進位的100代表十進位的144(=12^2),也稱為一羅;十二進位的1000代表十進位的1728(=12^3),也稱為一大羅;而十二進位的0.1則代表十進位的1/12。

十二進位是古埃及人最喜歡算法,這大概同月球一年繞地球12圈有關,他們還把夜晚的天空分成12部分。什麼黃道十二宮,12個星座,中國的12生肖、一天12個時辰、天幹地支都顯示著十二進位的影響力。

還有英制單位裡的「一英尺=十二英寸;一金衡磅=12金衡盎司;一先令=12便士;一打=12個;12打=1羅」等等體現十二進位的算法。  

9、十六進位算法

十六進位(英文名稱:Hexadecimal),是計算機中數據的一種表示方法。同我們日常生活中的表示法不一樣。它由0-9,A-F組成,字母不區分大小寫。與10進位的對應關係是:0-9對應0-9;A-F對應10-15;N進位的數可以用0~(N-1)的數表示,超過9的用字母A-F。

秦始皇頒布的計量制度,一斤=十六兩,所以才會有後來的「半斤八兩」這個成語。

十六進位因同二進位的關係被廣泛應用於計算機,當你用瀏覽網站看到中文地址時,其實就是瀏覽器把十六進位的地址編碼編譯成了實際字符。

10、二十進位算法

二十進位又稱「二進位編碼的十進位」,簡稱bcd碼。將十進位數採用二進位的編碼形式來表示的計數方法。一位十進位數用四位二進位數來表示。有多種表示方法,常用的是8421碼,8、4、2、1分別表示四位二進位數中從左到右各位的位權值。如十進位數97可表示為:10010111。

在古代,瑪雅人和墨西哥的阿茲特克族非常喜歡二十進位,他們創造了非常完整的二十進位系統。    

11、六十進位算法

六十進位是以60為基數的進位制,源於公元前3世紀的古閃族,後傳至巴比倫,流傳至今仍用作紀錄時間、角度和地理坐標。其他文明也有使用六十進位,如西紐幾內亞的Ekagi族。

數字60有12個因子,即1、2、3、4、5、6、10、12、15、20、30和60,其中2、3和5是質數。由於擁有較多因子,六十進位的數可被較多數整除;換言之,可以分拆成多種不同的時間長度,例如一小時可以被看作2個30分鐘、3個20分鐘、4個15分鐘等。60也是可同時被1至6整除的最小的數字。

無論哪種進位算法有沒有被延續下來繼續使用,但它們都為人類發展作出重要貢獻。雖然有些已經被歷史淹沒,成為記憶,但有些進位算法我們還是可以當作業餘愛好,來鍛鍊我們的思維能力、邏輯能力還是不錯的。

相關焦點

  • 你可能不知道,二進位比十進位更簡單
    在世界各文明獨立發展的數學中,出現過二十進位、六十進位、十六進位、十進位等,其中最廣泛採用的數制是十進位。亞里斯多德曾對此分析,可能是因為人有十個手指頭的緣故。直到現在,小朋友們學算術時還經常掰著手指頭算簡單的加減運算。
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    進位轉換圖【原創】文章全部內容皆為作者原創,如有轉載請註明出處我們人類有十根手指,通常情況下我們在生活中的計數方式為「十進位」(即0-9),也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字110,表達的就是十進位中的6;二進位數字1111,表達的就是十進位中的15。
  • 程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥
    程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥?假如你有一個程式設計師的女朋友,突然給你發了一串數據(68656c6c6f 62616279),你知道什麼意思嗎?該怎麼回她呢?每天除了寫代碼,就是在學習寫代碼的路上。
  • scratch製作「二進位轉十進位」
    我們之前學習並製作過「十進位轉二進位」的小程序:如圖:學生作品1「十進位轉二進位」學生作品2「十進位轉二進位」接下來我們製作「二進位轉十進位」的小程序。)十進位,初始化為0,用於累加轉換好的數字和最後的輸出。
  • python進位轉換:十進位轉二進位的用法
    我們在學習python時候肯定會碰到關於進位轉換,其實這是非常簡單的,這個就像小學學習數學乘法口訣意義,只要記住轉換口訣即可輕鬆應用,一起來看下具體的操作內容吧~一、python進位轉換dec(十進位)—> bin(二進位)dec(十進位)—> oct(八進位)dec(十進位)—> hex(十六進位)二、十進位我們所熟知的十進位,其實是從 0 開始,數到 9 之後,就跳到
  • C/C+編程筆記:C語言進位詳解,二進位、八進位和十六進位!
    例如表示 5+8 的結果,一個數字不夠,只能」進位「,用 13 來表示;這時」進一位「相當於十,」進兩位「相當於二十。 因為逢十進一(滿十進一),也因為只有 0~9 共十個數字,所以叫做十進位(Decimalism)。十進位是在人類社會發展過程中自然形成的,它符合人們的思維習慣,例如人類有十根手指,也有十根腳趾。
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位
  • 二進位轉換為十進位和十進位轉換為二進位的方法
    各位小夥伴們大家好,在之前的文章中小編也介紹了關於二進位轉十進位的方法,這次小編知道了一個更簡單的方法,具體如下:比如我們要把28轉為二進位:那我們把11100轉換為10進位:11100轉十進位>還是從左到右,第一個數字1後面有4個數字,那麼就是2的4次方,之後一次類推知道2的0次方,再用相對應的次方乘以相對應的二進位數字就可以了,所以11100得到的十進位數字就是28。
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    那麼,我們可以得出結果將0.45轉換為二進位約等於0.0111 上面介紹的方法是十進位轉換為為二進位的方法,需要大家注意的是: 1) 十進位轉換為二進位,需要分成整數和小數兩個部分分別轉換 2) 當轉換整數時,用的除2取餘法,而轉換小數時候,用的是乘2取整法 3) 注意他們的讀數方向 因此,我們從上面的方法,我們可以得出十進位數168.125轉換為二進位為10101000.001,或者十進位數轉換為二進位數約等於
  • 為什麼電腦用二進位而不用十進位
    1.由於十進位比二進位多出8個狀態,而計算機是由硬體構成的,多出的狀態需要更多的硬體來完成;2.二進位狀態少,意味著足夠簡單,只需要找到一種硬體能夠「穩定」的兩種狀態即可,能夠一定的條件方便切換。3.由於計算機產生的背景直接原因是因為人類的算力不足,不能夠高速計算,而計算本來基於數學模型的,所以需要一套完備的數學理論,早在19世紀初期,英國數學家喬治·布爾創立了一個學科,叫做布爾代數,而布爾代數中有一部分是邏輯運算,基於Ture和False的數學運算理論,這裡的True和False基於等價性原則,正好可以代表0和1,所以基於二進位計算也有了完美的數學理論支持;4.
  • 二進位十進位如何互相轉換?看完這篇,你就全明白了
    因為網段是ip與子網掩碼做「與」(計算機語言中的and算法)計算得到的。什麼是and算法?這裡我幫你回憶一下課堂知識。and算法:1與0=1 ,0與0=0 ,1與1=1計算機處理的都是二進位,所以我順便再幫大家回憶一下課堂裡二進位與十進位互相轉換的算法吧。
  • 記下這些,十進位轉二進位就這麼簡單
    十進位轉為二進位分為整數部分轉換和小數部分轉換,兩個事不同的情況,下面我們分別講解。一、整數部分的十進位轉為二進位連續用該整數除以2取餘數,然後用商再除以2,直到商等於0為止,最後把各個餘數按相反的順序排序。
  • 電腦內部為什麼不用十進位?採用八進位和十六進位的原因
    電腦是由0和1組成的,相信大部分人都聽過,對應電路中的通電和不通電,所以電腦底層是由二進位組成的。那為什麼不在二進位上建立十進位,而是採用八進位和十六進位呢?理論是可以在二進位基礎上就建立十進位的,但相比之下,效率會變慢,算法會複雜。我們看下面這張圖,二進位和八進位之間轉換非常簡單,記住八個對應關係,不用紙張演算就能說出來。
  • 不是玩笑:十根手指決定了十進位成為國際通用記數規則
    人類早期為了數獵物、果實等物體的需要,逐漸產生了數。人的手指就是最早的計數工具。隨著生產力的不斷發展,人們在實踐中接觸的數目越來越多,也越來越大,因而需要給所有自然數命名。
  • 不是玩笑:十根手指決定了十進位成為國際通用計數規則
    瑪雅數字除了中國之外,在其他地方也出現了類似的十進位記數法,比如古印度,古希臘等等。亞里斯多德曾經說過,人類普遍使用十進位,只不過是因為人生來就有十根手指。與此相對的,已經退出歷史舞臺的瑪雅數學使用的是二十進位,考古學家猜測這是因為他們在數數的時候除了手指,還加上了腳趾頭的緣故。英語單詞Digit(數字)可以指手指或腳趾,單詞five(五)和單詞fist(拳頭)有相同的詞根,出現這種情況也並不是巧合。
  • 表格技巧—Excel中將十進位轉成十六進位
    ,其中比較常見的就是十進位和十六進位。這是因為在計算機領域,十六進位還是經常用到的。那麼如何將十進位轉成十六進位呢?下面我們就來學習一下。  打開一個Excel文檔,看到文中有一組十進位的數據:     在彈出的對話框中,選擇十進位轉成十六進位的函數:DEC2HEX,點擊確定:
  • 十進位數的編碼與運算
    4位基2碼有16種不同的組合,怎樣從中選擇出10個組合來表示十進位數位的0-9,有非常多的可行方案,下面介紹其中的最常用的幾種。  ① 十進位有權碼  是指表示一個十進位數位的4位基2碼的每一位有確定的位權。
  • 計算機等級考試詳解:十進位數92轉換為二進位數!
    計算機等級考試詳解:十進位數92轉換為二進位數!本經驗由宗龍龍原創,全文共1000多字,閱讀需要14分鐘,如果文中存在錯誤,還請大家多多指點,我會積極改進的!14、十進位數92轉換為二進位數是()。A)01011100B)01101100C)10101011D)01011000(圖片來源於網絡)這一題主要考察的是十進位與二進位的相互轉換問題。如果你不知道如何轉換,沒有關係,我們只需要打開pc電腦端的計算器便可以輕鬆的進行十進位與二進位之間的轉換。
  • 進位轉換器
    進位轉換器 系統安全 大小: 7.52MB
  • Python中的二進位搜索算法
    與效率較低的方法相比,這是一種非常聰明的算法,可大大減少在大型數據集中搜索項目所需的時間。重要的是要注意,為了使用二進位搜索,必須對數據進行排序。 有些人將排序算法和搜索算法混為一談,將它們歸為一類,但是花一點時間組織一下「算法工具包」是很值得的,並確保搜索和排序都有自己的部分。