Python零基礎入門——認識二進位數

2021-01-09 米粒教育

同學們好。在上一節課,我們安排了一個課後練習,要求同學們繪製求兩數和算法的流程圖。求兩數和算法的步驟如下:

(1)獲取用戶輸入的兩個加數,分別存儲到num1和num2兩個變量;

(2)求num1和num2兩數的和,將和存儲到sum變量;

(3)將sum變量輸出到電腦屏幕。

下面我們來繪製這個流程圖,步驟如下:

(1)流程圖的開始使用用開始符號,我們手繪或使用繪圖工具繪製一個圓角矩形,並在圓角矩形內寫入文字「開始。

(2)在開始符號的正下方繪製一個平行四邊形,平行四邊形是流程圖的輸入/輸出符號,並在符號內寫入文字「輸入num1和num2」,然後繪製一條從開始符號指向輸入/輸出符號的流程線,流程線的箭頭指向輸入/輸出符號。

(3)這一步是求兩數的和,在輸入/輸出符號正下方繪製一個矩形,矩形是流程圖的計算過程符號,並在計算過程符號內寫入「sum=num1+num2」,然後從輸入/輸出符號繪製流程線到計算過程符號。

(4)計算過程符號後面是輸入/輸出符號,表示輸出num到電腦屏幕,在計算過程符號正下方繪製輸入/輸出符號,並在輸入/輸出符號內寫入文字「輸出sum」,然後從計算過程符號繪製流程線到輸入/輸出符號。

(5) 最後,繪製流程圖的結束符號。

好,我們來開始學習新的內容。這節課我們主要學習二進位數。為什麼要學習二進位數呢?因為二進位數只有兩個數字0和1,因此二進位數非常適合描述電路的通與短、開關的打開與關閉。例如,我們可以用二進位數0和1來表示燈泡的亮與不亮,用二進位數0來表示燈泡不亮,用二進位數1來表示燈泡亮,這樣我們就可以用多個二進位數來表示燈泡的亮與不亮了。如01011表示有三個燈泡亮,兩個燈泡不亮。

計算機的電路都是由電子元器件組成的,電子元器件的狀態分為通電和不通電。通電的電子元器件會有電壓,稱為高電位,用二進位數1來表示,不通電的電子元器件沒有電壓,稱為低電位,用二進位數0來表示,這樣一組電子元器件的狀態就可以用一組二進位數來表示,這些表示電子元器件狀態的二進位可以進行最簡單的加減運算(再複雜的運算最終都會分解為加減運算),運算後的結果再通過控制電路改變電子元器件的狀態。因此計算機內部運算都採用二進位運算,能夠識別的數也是二進位數。

那麼,二進位數是怎麼運算的呢?二進位數和十進位數有什麼關係,畢竟我們生活中用的都是十進位數。

我們先來做一個小遊戲。伸出我們的右手,從小指開始,依次到大拇指分別代表數字1、2、4、8、16。並且每個手指分為兩種狀態,手指伸直為1狀態,手指彎曲為0狀態。然後分別做每個手指自由伸直或彎曲動作,記錄其狀態和每個手指的數字之和,狀態順序從大拇指開始:

(1)動作:伸直小指、中指和大拇指,彎曲無名指和食指。

狀態:10101

數字之和:21

(2)動作:伸直小指、無名指和中指,彎曲大拇指和食指。

狀態:00111

數字之和:7

(3)動作:伸直全部手指。

狀態:11111

數字之和:31

有同學可能會問,做這個遊戲的意義在什麼地方呢?這個遊戲用直觀化的方式演示了二進位數到十進位數的轉換,五個手指的伸直和彎曲的狀態組合用0和1表述出來,這就是我們本課程要學習的二進位數,遊戲中記錄的數字之和就是二進位數的十進位表示。

前面的遊戲可以把5個二進位數轉換為十進位數,同樣的道理,也可以把30以內的十進位數轉換為二進位數。只需要把十進位數分解成16、8、4、2、1任意數字之和就可以,然後將對應數字的右手手指伸直,沒有對應數字的右手手指彎曲,從大拇指開始記錄其組合狀態,該組合狀態就是要轉換的二進位數。

例如:

十進位數字:5=4+1 對應的二進位數為:00101

十進位數字:28=16+8+4 對應的二進位數為:11100

這個遊戲能不能實現更多二進位數的轉換呢?當然可以,右手五個手指表示5個二進位數,如果再加上左手就可以表示10個二進位數了,所能表示的十進位數也更大。依次類推,多人合作可以表示更多位的二進位數和更大的十進位數。

可以藉助十進位數來理解二進位數。在十進位中,最開始學習的是十以內的加法,之後是兩位數的加法,在兩位數加法的學習中,就需要逢十進一了,按進位的原則進行記數的方法叫做進位記數制,也稱為「數制」或「進位」。

我們平時用的最多的就是十進位,時間是六十進位,也就是說逢六十進一,例如60秒進1分,60分進1小時。因此每一種數制的進位都遵循一個規則,那就是——逢n進1。這裡的n叫做基數。

二進位數因為只有0和1兩個數字,用數學語言來說就是基數為2。依次類推,基數為3的是三進位計數、……、基數為10的就是十進位計數,十進位計數有10個數字,分別是0、1、2、3、4、5、6、7、8、9。

認識了二進位計數,接下來再說說位權。可以藉助於十進位計數來理解位權,在十進位計數中,計數單位分別為個位、十位、百位、千位、萬位、十萬位……,其中個位數表示數值1、十位數表示數值10、百位數表示數值100、千位數表示數值1000、……,每個位數表示的數值叫位權。位權通過計算基數的n-1次乘方就可以得到,這裡的n是指位數所在數字中的位置。例如,對十進位數1260來說,個位數是1260的第一個數字,因此n為1;十位數是第二個數字,因此n為2;百位數是第三個數字,因此n為3;千位數是第四個數字,因此n為4。由此,個位數的位權為10的1-1次乘方是1,十位數的位權為10的2-1次乘方是10、百位數的位權為10的3-1次乘方是100、千位數的位權為10的4-1次乘方是1000。

關於乘方運算

乘方運算是指一個數連續自乘n次,可以稱為該數的n次乘方。例如:3個5連續自乘,可以稱為3的5次乘方。除0外,任何數的0次乘方都為1。

理解了十進位的位權,再來理解二進位的位權就很容易了。例如,二進位數00111從低位到高位的位權依次是2的0次乘方,結果是1、2的1次乘方,結果是2、2的2次乘方,結果是4、2的3次乘方,結果是8、2的4次乘方,結果是16,這也是前面從小指開始到拇指指定的位權。

理解了二進位計數的基數和位權,就可以進行數制轉換了。00111如何轉換成十進位計數呢?轉換很簡單,將二進位數從高位到低位每個數字乘以相應的位權然後求和就可以了。

00111(二進位)= 0 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 1 * 1 = 7(十進位)。

課程小結

二進位數只有數字0和1,二進位數的這個特點正好用於表示電子元器件的狀態,電子元件器有通電(高電位)和斷電(低電位)兩種狀態。因此使用二進數可以表示電子元器件的狀態。而計算機是由成千上萬個電子元器件構成的,所以計算機內部運算都採用二進位運算,能夠識別的數也是二進位數。

課後小練習

將下列二進位數轉換為十進位數:

(1)1011

(2)0001

(3)10101

相關焦點

  • python字符的編碼與解碼
    直接識別是不可能,它只能識別 二進位的0,1字符。所有我們輸入進去的字符,最終都會被轉化成0,1這種組合在一起的一串數字。計算機存儲信息的最小單位,稱之為位(bit),又叫比特,二進位的一個「0」或一個「1」叫一位。
  • 《周易》教你二進位~二進位與十進位互相轉化
    二進位數字 0 代表 陰爻— — 1 代表 陽爻 ——八卦的二進位數(爻從下往上看 數從左到右寫)乾111 兌110 離101 震100 巽011 坎010 艮001 坤000八卦的二進位數轉為十進位數乾111=7 兌110=6 離101=5 震100=4巽011=3 坎010=2 艮001=1 坤000=0
  • 易經八卦和二進位的關係
    那我們現在寫出一個二進位數,比如說「1011」,這什麼意思呢?再用4除以2 ,等於2餘數還是0對不對,再用2除以2等於1餘數0對不對,再用1除以2等於0,餘1(二進位數不涉及小數點),一直到最後這個「商」等於0。然後怎麼做呢?我們把這些個餘數從右往左寫一下,看看是什麼:10001,所以呢十進位數「17」就等於二進位數的「10001」雖然看著是對稱的,但請放心這是對的。
  • 萊布尼茨發明二進位與太極八卦無關
    但是,仔細閱讀萊布尼茨的書信和筆記,再對照時間會發現,萊布尼茨研究二進位取得關鍵性突破是在1672年——1676年,受到古代埃及和巴比倫計數制啟發,進而結合前人已有的如17世紀初託瑪奇.哈利奧特的二進位思想最終取得理論成果。1701年4月25日他向法國科學院提交並宣讀了他題為《二進位數學》的研究論文。
  • 16進位數轉換成8421BCD編碼函數
    1、BCD碼與十進位數的轉換 BCD碼與十進位數的轉換關係很直觀,相互轉換也很簡單,將十進位數75.4轉換為BCD碼:7-》0111,5-》0101,4-》0100所以拼成8421BCD碼的結果是:(0111 0101.0100)BCD;若將BCD碼1000 0101.0101轉換為十進位數:1000-》8,0101-》5,0101-》
  • 二進位與兩元顛倒訣
    順便說一下, 六爻定世應的方法也是比較簡單的, 網上的文章一般描述比較複雜, 其實就是先天八卦中,自震起一數,遇到坎離就跳過去, 順時針數, 而如果歸藏出來的是坎離, 那麼坎是歸魂四爻,離是遊魂三爻.
  • python編程30個常用技巧
    打開APP python編程30個常用技巧 深度學習這件小事 發表於 2020-12-24 15:07:51 1、冒泡排序
  • 二進位究竟是由誰發明的?是萊布尼茨,還是來源於中國的周易
    並推算出了著名的二進位。對以後的數學發展產生了深遠的影響。然而,這種二進位和中國《周易》裡的內容相吻合,以至於讓二進位的發明權有了爭議。到底是誰發明了二進位?是萊布尼茨還是古老的中國人?那些認為二進位是萊布尼茨發明的人,他們的依據是。萊布尼茨會在收到在中國的法國傳教士白晉寄給他的伏羲六十四卦次序圖和方位圖之前根本沒有見過太極圖。
  • 湖大教授說八卦符號就是古代的二進位
    2007年,姜廣輝在《光明日報》上發表了《邵雍的「加一倍法」就是嚴格意義的「二進位」》,為八卦解讀提供了一個新視角。 說到二進位,廣大程式設計師肯定不陌生。雖然我們生活中普遍使用十進位,計算機領域卻是二進位的天下,包括今天方便千萬商家、顧客的二維碼,其原理也是基於二進位。 而八卦與二進位有異曲同工之妙。
  • 吳國平:為何說中國八卦是世界上最早二進位表示法
    而二進位是計算機技術中廣泛採用的一種數制。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」。當前的計算機系統使用的基本上是二進位系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進位則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
  • 「測一測你的性格」小案例學習python字符串操作
    今天樹哥也嘗試用python做一個「性格測試小程序」,用這個案例來說明一下python的日曆和字符串操作的一些用法。一、案例分析案例題目:讓用戶輸入出生年月日,返回這是這一年的第幾周第幾天,並輸出當周的日曆。給出用戶的屬相給出用戶的星座,並告知用戶的性格。
  • 周易,幹支,太陽系,二進位
    至於哲學,八卦所以能類天下萬物,其實是二進位算法。因電腦就是二進位,可以指代天下萬物。
  • 計算機二進位祖宗是西方人?中國道教一張八卦圖千年前早已解釋!
    萊布尼茨:沒辦法,你代表的是古典十進位,我代表的是未來的二進位。為什麼計算機只愛「二進位」人類天生有十個手指,自然也就有了十進位。在亞馬遜邊上打漁回來分食人魚,所有人伸出十個手指,基本夠用。那數字到底怎麼表述呢,人類畢竟是視覺動物。
  • 關於中文轉換成摩斯電碼,二進位的代碼實現步驟
    摩爾斯電碼是一種早期的數位化通信形式,但是它不同於現代只使用0和1兩種狀態的二進位代碼,它的代碼包括五種:點(·):1劃(-):111字符內部停頓(在字符內的那些點和劃之間):0短停頓(在字符之間):000中等停頓(在單詞之間):0000000有兩種「符號」用來表示字符:點(·)和劃(-)
  • python浮點數表示專題及常見問題 - CSDN
    浮點數用來存儲計算機中的小數,與現實世界中的十進位小數不同的是,浮點數通過二進位的形式來表示一個小數。在深入了解浮點數的實現之前,先來看幾個 Python 浮點數計算有意思的例子:0.1 == 0.10000000000000000000001True0.1+0.1+0.1 == 0.3FalseIEEE 浮點數表示法這些看起來違反常識的「錯誤」並非 Python 的錯,而是由浮點數的規則所決定的,即使放到其它語言中結果也是這樣的
  • 你所看到的事物不再是二進位看到的,而是三維四維五維甚至六維
    計算機問世十幾年來,人類始終認為,二進位數是最安全,最準確的,當任何一個局部狀態有誤差,則會去找該進位位。直到ibm,打算去量子空間找人類記憶,發現你可以去量子空間修改數據,則使用量子信息技術,更準確定位你的狀態。也就是,你所看到的事物,不再是二進位看到的,而是三維,四維,五維,甚至六維。量子信息技術,似乎已走進人類的認知高度。量子計算機則是量子計算機的一個階段。
  • 人類計算數字常用「十進位」,為何計算時間卻是「六十進位」?
    人類計算數字常用「十進位」,為何計算時間卻是「六十進位」?正如標題中的問題那樣,我們人類在學習數學的時候,使用的都是「十進位」,也就是逢十進一。後來人類發明了計算機,為了便於計算機「理解」,便讓計算機使用了只有「0」和「1」的「二進位」。
  • Python編程題:兩個日期間的天數統計(附代碼)
    題目一解題思路:將兩個日期格式化成time模塊中的標準時間結構struct_time,缺少值用0補齊利用time模塊函數分別計算兩個日期到時間戳(指格林威治時間1970年01月01日00時00分00秒)的總秒數將
  • Javascript每日一學-Javascript中關於浮點數運算的坑
    因為電腦永遠都是按照二進位進行運算的,我們輸入的十進位數在轉化為二進位數時,並不總如人意,意思是說有些十進位並不能用準確的二進位數表示。十進位小數轉二進位表示我們來看下十進位小數轉二進位表示的過程,小數位乘以2,取整,小數部分繼續乘以2,再取整,直到小數部分為0為止,然後將取整位按順序排列。由此方法我們可以看到以下一些十進位小數的二進位表示。
  • 35行代碼利用python生成字符畫,非常適合初學者練習,附源碼!
    35行代碼利用python生成字符畫,非常適合初學者練習,附源碼! python字符畫生成的原理及其簡單,一句話概括就是----將圖片像素點用不同字符代替,從而將像素組成的圖片轉變成用字符組成的字符畫。為了儘可能的使得字符畫展示效果與圖片相同。