為什麼電腦採用二進位?十進位究竟代表人腦的進化還是退化?

2020-11-15 證明數學

為什麼人類的運算最終統一為十進位?具體的歷史發展進程已經很難準確地進行考證,但大概率一定是因為人有10根手指。

比如我國古代就曾使用過十六進位,但最終還是被歷史所淘汰。直到萊布尼茨提出二進位算法,人們才發現越簡單就越優化。

後來,隨著計算機的發展,人們終於意識到二進位算法的速度遠遠優於十進位。計算機在計算的時候是這樣操作的,人們輸入一個十進位數據,計算機將十進位數據轉化為二進位數據,再對這個二進位數據進行運算,得出一個二進位數據的結果,最後再把二進位數據的結果轉化為十進位數據的結果。看上去好像更複雜了,但對於大數據的複雜運算,這樣操作的速度是要遠遠高於直接用十進位數據來運算的,只是計算機為了適應人類十進位的習慣,才多轉化了兩次而已。

其實,我國古代很早就有二進位的意識。太極八卦圖中,太極生兩儀、兩儀生四象、四象生八卦的思想就是二進位的完美體現。用來表示乾、坤、震、巽、坎、艮、離、兌這八卦的長線和短線,就是二進位中的0和1。一黑一白、一陰一陽、一長一短、一0一1。

什麼是二進位?

簡單來說,我們使用的十進位共有0、1、2、3、4、5、6、7、8、9十個數字,運算滿足逢十進一。類似地,二進位就只有0和1這兩個數字,運算滿足逢二進一。

二進位和十進位如何轉化?

1.二進位轉化為十進位

二進位數

a1a2…an

=a1*2^(n-1)+a2*2^(n-2)+…+an*2^0

這裡a1、a2、…、an代表0或1

例如,二進位

1100011

=1*2^6+1*2^5+0*2^4+0*2^3+0*2^2+1*2^1+1*2^0

=2^6+2^5+2^1+2^0

=64+32+2+1

=99

2.十進位如何轉化為二進位?

這個問題要複雜一點,直接舉例說明

就以十進位99為例,具體操作去下

99÷2=49…1

49÷2=24…1

24÷2=12…0

12÷2=6…0

6÷2=3…0

3÷2=1…1

1÷2=0…1

直到最後商0為止,然後將餘數依次從後面往前面寫出來即可。

99轉化為二進位1100011

換一個數字328

328÷2=164…0

164÷2=82…0

82÷2=41…0

41÷2=20…1

20÷2=10…0

10÷2=5…0

5÷2=2…1

2÷2=1…0

1÷2=0…1

328轉化為二進位101001000

最後來玩一個我很小的時候玩的遊戲

第一組:1,3,5,7,9,11,13,15

第二組:2,3,6,7,10,11,14,15

第三組:4,5,6,7,12,13,14,15

第四組:8,9,10,11,12,13,14,15

你在1—15這15個數字中任選一個數字,告訴我這個數字分別出現在第幾組,我就能很快告訴你這個數字是幾。

例如數字13分別出現在第一組、第三組和第四組。你只需要記住第一組代表2^0=1、第二組代表2^1=2、第三組代表2^2=4、第一組代表2^3=8。

分別出現在第一組、第三組和第四組,這個數字就是1+4+8=13。這個小遊戲的思想就是二進位的思想,具體道理就留給大家去思考一下。


相關焦點

  • 二進位轉換十進位,十進位轉換二進位
    如果把一個十進位的數轉換成二進位的數 , 直接把數除 以二 , 餘數為一就寫1 , 整除 , 就寫0 , 一直除完為止
  • 程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥
    程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥?假如你有一個程式設計師的女朋友,突然給你發了一串數據(68656c6c6f 62616279),你知道什麼意思嗎?該怎麼回她呢?計算機專業的同學,在學習編程中,尤其是初學者,經常有這樣的疑問,一般人只認識十進位(520),電腦只能識別二進位(1000001001),那十六進位(208)能做什麼的?為什麼還要在中間加上一個十六進位呢,是不是多此一舉嗎?本來初學編程,對二進位就不熟悉,要花不少時間和理解來學習理解,在學個十六進位不是很多餘嗎?
  • 二進位、八進位、十進位、十六進位數的轉換方法
    一般計數都採用進位計數,其特點是:(1)逢N進一,N是每種進位計數制表示一位數所需要的符號數目為基數。(2)採用位置表示法,處在不同位置的數字所代表的值不同,而在固定位置上單位數字表示的值是確定的,這個固定位上的值稱為權。
  • 二進位、八進位、十進位和十六進位數之間的轉換方法
    (1)十進位整數轉換成非十進位整數①為什麼要進行數制間的轉換?因為日常生活中經常使用的是十進位數,而在計算機中採用的是二進位數。所以在使用計算機時就必須把輸入的十進位數換算成計算機所能夠接受的二進位數。計算機在運行結束後,再把二進位數換算成人們所習慣的十進位數輸出。這兩個換算過程完全由計算機自動完成。②轉換方法十進位整數化為非十進位整數採用「餘數法」,即除基數取餘數。
  • 二進位,八進位,十進位,十六進位之間的轉換
    什麼是二進位二進位是計算技術中廣泛採用的一種數制。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進位系統,數據在計算機中主要是以補碼的形式存儲的。
  • 計算機的語言——二進位,十進位、八進位、十六進位與二進位之間的轉換
    一、進位的概念計算機中使用二進位編碼(只有0和1)表示數據,且只存在二進位。而C程序代碼中的整數常量,為了書寫方便,用十進位、八進位、十六進位表示,比如:十進位整數123、-23、+99等。而無論十進位、八進位還是十六進位數據在計算機中表示是轉換成二進位編碼表示,計算機中只存在二進位。
  • 計算機基礎進位轉換(二進位、八進位、十進位、十六進位)
    1.十進位轉R進位1.1 十進位轉二進位十進位整數轉二進位十進位整數轉換成二進位採用「除2倒取餘」,十進位小數轉換成二進位小數採用
  • 二進位、八進位、十進位與十六進位
    一、 進位的概念在計算機語言中常用的進位有二進位、八進位、十進位和十六進位,十進位是最主要的表達形式。對於進位,有兩個基本的概念:基數和運算規則。基數:基數是指一種進位中組成的基本數字,也就是不能再進行拆分的數字。二進位是0和1; 八進位是0-7;十進位是0-9;十六進位是0-9,A-F(大小寫均可)。也可以這樣簡單記憶,假設是n進位的話,基數就是【0,n-1】的數字,基數的個數和進位值相同,二進位有兩個基數,十進位有十個基數,依次類推。
  • 十進位轉二、八、十六進位
    微信:15338817400有時候服務端需要二進位的字符串或者十六進位(加密token一般不會用十進位)所以十進位和十六進位、二進位互相轉化顯得十分重要1、十進位轉二進位也就是說,將正的十進位數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就OK咧。哎呀,還是舉例說明吧,比如42轉換為二進位,如圖1所示操作。二進位如何轉十進位,十進位如何轉二進位42除以2得到的餘數分別為010101,然後咱們倒著排一下,42所對應二進位就是101010.
  • 個人總結——二進位、十進位、十六進位轉換的方法
    近期和同事溝通時發現很多小夥伴多進位的轉換不太清晰,所以趁著周末自己總結了一下和大家分享想,下面先了解下定義。
  • 二進位、十進位和十六進位
    持續更新中······最新隆重推出「作品定製」,定製方法點擊菜單欄「DIY」即可進位,看似很簡單的東西,但很多同學還是不能徹底理解。這裡先簡單介紹一些注意事項,然後還是從實驗中講解會比較深刻。1) 十進位就不多說了,逢十進位,一個位有十個值: 0 ~ 9,我們的生活中到處都是它的身影。
  • python進位轉換:十進位轉二進位的用法
    我們在學習python時候肯定會碰到關於進位轉換,其實這是非常簡單的,這個就像小學學習數學乘法口訣意義,只要記住轉換口訣即可輕鬆應用,一起來看下具體的操作內容吧~一、python進位轉換dec(十進位)—> bin(二進位)dec(十進位)—>
  • 10、進位轉換:二進位、八進位、十六進位、十進位之間的轉換
    將二進位、八進位、十六進位轉換為十進位二進位、八進位和十六進位向十進位轉換都非常容易,就是「按權相加」。所謂「權」,也即「位權」。假設當前數字是 N 進位,那麼:更加通俗的理解是,假設一個多位數(由多個數字組成的數)某位上的數字是 1,那麼它所表示的數值大小就是該位的位權。
  • 二進位、八進位、十進位、十六進位轉換計算方法
    進位也就是進位位,我們常用的進位包括:二進位、八進位、十進位與十六進位,它們之間區別在於數運算時是逢幾進一位。比如二進位是逢2進一位,十進位也就是我們常用的0-9是逢10進一位。
  • 進位轉換 二進位轉十進位
    上節課我們學習了十進位轉換成二進位的方法,那二進位轉換十進位是怎麼轉換的呢?
  • 6、計算機進位之二進位、十進位、十六進位之間的轉換
    4、進位之間的轉換4.1、正整數的十進位轉換二進位將一個十進位數除以二,得到的商再除以二,依此類推直到商等於一或零時為止,倒取除得的餘數,即換算為二進位數的結果4.2、二進位轉換為十進位二進位轉十進位的轉換原理:從二進位的右邊第一個數開始,每一個乘以2的n次方,n從0開始,每次遞增1。然後得出來的每個數相加即是十進位數。
  • 二進位中沒有2,為什麼十進位中有10?
    換個說法,其實任意進位都可以叫做10進位。只是我們先採用了10(9+1)進位,而在此基礎上對其他進位進行了命名而已。 以上雖然是個笑話,但這個故事也說明了十進位的一個起源——人類的使用數字的計數方式是通過數手指演化來的。因為,人只有十根手指嘛。
  • 十進位數與二進位數的相互轉化
    最近,高二年級中有n多個同學問我:「老師,怎樣將十進位數轉化為二進位數呢?如果轉化為八進位數呢?」
  • 二進位,八進位,十進位,十六進位轉換詳解~
    ①、數碼:用來表示進位數的元素。                                二進位:0,1。                                八進位:0,1,2,3,4,5,6,7                                十進位:0,1,2,3,4,5,6,7,8,9。
  • scratch製作「二進位轉十進位」
    我們之前學習並製作過「十進位轉二進位」的小程序:如圖:學生作品2「十進位轉二進位」接下來我們製作「二進位轉十進位」的小程序。樣例輸入:11011樣例輸出:27方法1,從前向後遍歷新建變量:二進位,用於存儲回答中輸入的二進位數字長度,輸入二進位數字的長度(scratch相對簡單,不用區分變量的類型)十進位,初始化為0,用於累加轉換好的數字和最後的輸出。