close

二進制(binary)回憶上次內容

上次我們了解了ASCII碼錶

American Standard Code for Information Interchange

ASCII 碼錶就是

美國信息交換標準代碼

ASCII 碼錶範圍

數字的編碼減去 0x30 正好得到數字本身

0x30-0x39 這個範圍是 數字

0x41-0x5A 這個範圍是 大 寫字母

0x61-0x7A 這個範圍是 小 寫字母

0x20-0x7F 之間各處零散排布着各種符號

字符在計算機當中是用二進制方式存儲的

我們現在可以得到字符的序號

但是能通過字符序號

得到字符的二進制形態麼?🤔

轉化

原來從十進制轉化到二進制

用得是手動轉化的方法

現在python中

可以用函數的方法直接轉化

bin(number)

bin函數就可以把數字轉化為二進制形式

查詢 bin

bicycle 兩個輪子的 自行車

bisect sect是切的意思 一分為二

bilingual 雙語

bisexual 雙性戀

bin 對應 binary 二進制

bi 一般代表雙重的

動手試一試

動手#得到a的序號ord("a")#輸出97對應的二進制形式bin(97)

運行結果

原來括號裡面的東西都是要加雙引號的

為什麼這個97不加雙引號了呢?

我偏要給他一個雙引號!😏

類型

報錯了!!!❌

報的不是NameError

而是TypeError

類型的錯誤

字符串(str)類型不能被解釋為一個整數(integer)類型

bin函數要的參數是整數

你給bin函數的是字符串("97")

這類型指的是什麼呢?

type函數

type函數

可以得到變量的類型

"97"有雙引號

是字符串類型

97沒有雙引號

是整數類型

類型很重要!!!

再查bin函數手冊是怎麼要求的

再查bin函數

bin的參數要的是整數(int)

括號里要的是整數(int)

所以不能有雙引號

我們再看看報錯

要的是整數(int)

給的是一個字符串(string)對象

這字符串(string)對象不能被解釋為整數(int)

ord函數

對比ord函數

ord的參數是一個單字的字符串(str)`

括號里要的參數是字符串(str)

所以要有雙引號

如果我偏給他一個整數(int)呢?

要的是字符(str)

給的是整數(int)

又報錯了

不要害怕報錯

報錯是我們努力的見證

而不是我們無能的見證

我們要做的就是把報錯

變成不要報錯!

ord("a")得到的是整數(int)結果

把這個結果

送到bin函數裡面當參數會如何?

嵌套調用#找到a對應的序號的二進制形式bin(ord("a"))

這就很像

ord(chr(97))

chr(ord("a"))

有括號的要先進行運算

0b1100001 是二進制數 1100001

0b是 2 進制數的前綴標誌

可是為什麼 2 進制使用 0b 作為前綴?

0b 前綴

0 的起源

c 語言繼承了類似設定

0o 開頭表示 8進制數

0b 開頭表示 2 進制數

變量名開頭不許是數字

這就確保了 0 開頭肯定是數字

但正常情況下寫數字不會用 0 開頭

這保證 0 開頭很容易和 一般的 10進制數 區分開

在 c 語言之前的 B 語言用 0 開頭表示 8 進制

b 的起源

0b 的 b 是取自 binary

binary - 二進制

bin函數可以把10進制數轉化為2進制數

2進制數應該如何轉化成10進制數呢?

10進制數按權展開

十進制的數字在不同位上代表不同的級別

個十百千萬

位置越高

數字的權重越大

1 x 102 比 3 x 100 大得多

2進制數按權展開

二進制也一樣

只不過原來是10n

現在是2n

因為只有兩根手指頭

計算機中如何將10進制數轉化到2進制數呢?

直接輸出

直接輸出0b1100001

得到一個整型(int)的數字97

輸出型格式是十進制

雖然計算機內部用二進制去存取數字

但是展示給我們的時候

用的還是十進制

python 也用0開頭表示其他的進制數

那這個 0b1100001 是否就對應着 a 呢?

這和 ASCII 碼錶一致麼?

和 ASCII 表對比

先看看"a"字符的序號(ordinal)對應的二進制(binary)形式

驗證成功

這充分證明了我們用的確實是 ASCII 表!!!👏👏

廢話!😅

我們為什麼默認使用10進制數呢?

10進制的原因

我們是用10進制是因為我們有10根手指

那計算機為什麼使用二進制呢?

計算機

計算機只有兩根手指

就像電路只有

電燈只有

電路只有

高電平

低電平

所以只能用二進制

我們可以把十進制數轉化為二進制數

二進制數在計算機中是存儲在字節當中的

那我可以直接得到這個字節形態麼?

我們先總結一下這次新了解到的二進制

總結

數制可以轉化

binary

接收一個整數(int)

得到一個二進制數形式的字符串

bin(n)可以把數字轉化為 2進制

數字在計算機中是用二進制存儲的

但是展示給我們的時候用的是十進制

也就是0-9這10個字符的形式

都說字節是計算機存儲的最小單位

這些數字在字節裡面長什麼樣子呢?🤔

我們下次再說!👋

藍橋->https://www.lanqiao.cn/teacher/3584

github->https://github.com/overmind1980/oeasy-python-tutorial

gitee->https://gitee.com/overmind1980/oeasypython

視頻->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()