[oeasy]python0014_二進(jìn)制_binary_bin
?二進(jìn)制(binary)
回憶上次內(nèi)容
上次我們了解了
ASCII
碼表
ASCII
碼表就是
A
mericanS
tandardC
ode forI
nformationI
nterchange
美國信息交換標(biāo)準(zhǔn)代碼
ASCII 碼表范圍
0x30-0x39
這個(gè)范圍是數(shù)字
數(shù)字的編碼減去
0x30
正好得到數(shù)字本身
0x41-0x5A
這個(gè)范圍是大
寫字母0x61-0x7A
這個(gè)范圍是小
寫字母0x20-0x7F
之間各處零散排布著各種符號(hào)

字符在計(jì)算機(jī)當(dāng)中是用二進(jìn)制方式存儲(chǔ)的
我們現(xiàn)在可以得到字符的序號(hào)
但是能通過字符序號(hào)
得到字符的二進(jìn)制形態(tài)么???
轉(zhuǎn)化
原來從十進(jìn)制轉(zhuǎn)化到二進(jìn)制
用得是手動(dòng)轉(zhuǎn)化的方法

現(xiàn)在python中
可以用函數(shù)的方法直接轉(zhuǎn)化
bin(number)
bin函數(shù)
就可以把數(shù)字轉(zhuǎn)化為二進(jìn)制形式

查詢 bin
bin 對(duì)應(yīng) binary 二進(jìn)制
bi 一般代表雙重的
bicycle 兩個(gè)輪子的 自行車
bisect sect是切的意思 一分為二
bilingual 雙語
bisexual 雙性戀

動(dòng)手試一試
動(dòng)手
#得到a的序號(hào) ord("a") #輸出97對(duì)應(yīng)的二進(jìn)制形式 bin(97)
運(yùn)行結(jié)果

原來括號(hào)里面的東西都是要加雙引號(hào)的
為什么這個(gè)97不加雙引號(hào)了呢?
我偏要給他一個(gè)雙引號(hào)!??
類型
報(bào)錯(cuò)了?。?!?

報(bào)的不是NameError
而是TypeError
類型的錯(cuò)誤
字符串(str)類型不能被解釋為一個(gè)整數(shù)(integer)類型
bin函數(shù)要的參數(shù)是整數(shù)
你給bin函數(shù)的是字符串("97")
這類型指的是什么呢?
type函數(shù)
type函數(shù)
可以得到變量的類型

"97"有雙引號(hào)
是字符串類型
97沒有雙引號(hào)
是整數(shù)類型
類型很重要!??!
再查bin函數(shù)手冊(cè)是怎么要求的
再查bin函數(shù)
bin的參數(shù)要的是整數(shù)(int)
括號(hào)里要的是
整數(shù)(int)
所以不能有雙引號(hào)

我們?cè)倏纯磮?bào)錯(cuò)

要的是整數(shù)(int)
給的是一個(gè)字符串(string)對(duì)象
這字符串(string)對(duì)象不能被解釋為整數(shù)(int)
ord函數(shù)
對(duì)比ord函數(shù)

ord的參數(shù)是一個(gè)單字的`字符串(str)``
括號(hào)里要的參數(shù)是
字符串(str)
所以要有雙引號(hào)
如果我偏給他一個(gè)整數(shù)(int)呢?

要的是字符(str)
給的是整數(shù)(int)
又報(bào)錯(cuò)了
不要害怕報(bào)錯(cuò)
報(bào)錯(cuò)是我們努力的見證
而不是我們無能的見證
我們要做的就是把報(bào)錯(cuò)
變成不要報(bào)錯(cuò)!
ord("a")得到的是整數(shù)(int)結(jié)果
把這個(gè)結(jié)果
送到bin函數(shù)里面當(dāng)參數(shù)會(huì)如何?
嵌套調(diào)用
#找到a對(duì)應(yīng)的序號(hào)的二進(jìn)制形式 bin(ord("a"))
這就很像
ord(chr(97))
chr(ord("a"))
有括號(hào)的要先進(jìn)行運(yùn)算
0b1100001
是二進(jìn)制數(shù)1100001
0b
是 2 進(jìn)制數(shù)的前綴標(biāo)志

可是為什么 2 進(jìn)制使用
0b
作為前綴?
0b 前綴
0 的起源
變量名開頭不許是數(shù)字
這就確保了 0 開頭肯定是數(shù)字
但正常情況下寫數(shù)字不會(huì)用 0 開頭
這保證 0 開頭很容易和 一般的 10進(jìn)制數(shù) 區(qū)分開
在 c 語言之前的 B 語言用 0 開頭表示 8 進(jìn)制
c 語言繼承了類似設(shè)定
0o 開頭表示 8進(jìn)制數(shù)
0b 開頭表示 2 進(jìn)制數(shù)
b 的起源
0b 的 b 是取自 binary
binary - 二進(jìn)制
bin函數(shù)可以把10進(jìn)制數(shù)轉(zhuǎn)化為2進(jìn)制數(shù)
2進(jìn)制數(shù)應(yīng)該如何轉(zhuǎn)化成10進(jìn)制數(shù)呢?

10進(jìn)制數(shù)按權(quán)展開
十進(jìn)制的數(shù)字在不同位上代表不同的級(jí)別

個(gè)十百千萬
位置越高
數(shù)字的權(quán)重越大
1 x 102 比 3 x 100 大得多
2進(jìn)制數(shù)按權(quán)展開
二進(jìn)制也一樣
只不過原來是10n
現(xiàn)在是2n
因?yàn)橹挥袃筛种割^

計(jì)算機(jī)中如何將10進(jìn)制數(shù)轉(zhuǎn)化到2進(jìn)制數(shù)呢?
直接輸出
直接輸出0b1100001

得到一個(gè)整型(int)的數(shù)字97
輸出型格式是十進(jìn)制
雖然計(jì)算機(jī)內(nèi)部用二進(jìn)制去存取數(shù)字
但是展示給我們的時(shí)候
用的還是十進(jìn)制
python 也用0開頭表示其他的進(jìn)制數(shù)
那這個(gè)
0b1100001
是否就對(duì)應(yīng)著a
呢?

這和 ASCII 碼表一致么?
和 ASCII 表對(duì)比

先看看"a"字符的序號(hào)(ordinal)對(duì)應(yīng)的二進(jìn)制(binary)形式

驗(yàn)證成功
這充分證明了我們用的確實(shí)是 ASCII 表?。?!????
廢話!??
我們?yōu)槭裁茨J(rèn)使用10進(jìn)制數(shù)呢?
10進(jìn)制的原因
我們是用10進(jìn)制是因?yàn)槲覀冇?0根手指

那計(jì)算機(jī)為什么使用二進(jìn)制呢?
計(jì)算機(jī)
計(jì)算機(jī)只有兩根手指
就像電路只有
通
斷
電燈只有
亮
滅
電路只有
高電平
低電平
所以只能用二進(jìn)制
我們可以把十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)
二進(jìn)制數(shù)在計(jì)算機(jī)中是存儲(chǔ)在字節(jié)當(dāng)中的
那我可以直接得到這個(gè)字節(jié)形態(tài)么?
我們先總結(jié)一下這次新了解到的二進(jìn)制
總結(jié)
數(shù)制可以轉(zhuǎn)化
bin(n)可以把數(shù)字轉(zhuǎn)化為
2進(jìn)制
binary
接收一個(gè)整數(shù)(int)
得到一個(gè)二進(jìn)制數(shù)形式的字符串
數(shù)字在計(jì)算機(jī)中是用二進(jìn)制存儲(chǔ)的
但是展示給我們的時(shí)候用的是十進(jìn)制
也就是0-9這10個(gè)字符的形式
都說字節(jié)是計(jì)算機(jī)存儲(chǔ)的最小單位
這些數(shù)字在字節(jié)里面長什么樣子呢???
我們下次再說!*
藍(lán)橋->
github->
gitee->
視頻->
作者:oeasy