二進制(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