[oeasy]python0083_十進(jìn)制數(shù)如何存入計(jì)算機(jī)_八卦紀(jì)事_BCD編碼_Binary_Coded_Decimal
編碼進(jìn)化
回憶上次內(nèi)容
上次 研究了 視頻終端的 演化
從VT05 到 VT100
從 黑底綠字 到 RGB 24位真彩色
形成了 ?VT100選項(xiàng)
從而 將顏色
數(shù)字化
了

生活中我們更常用 10個(gè)數(shù)字
但是 計(jì)算機(jī)中 用二進(jìn)制
日常計(jì)數(shù)的十進(jìn)制數(shù)
是如何存儲進(jìn)計(jì)算機(jī)的呢???
從10進(jìn)制到2進(jìn)制
日常生活中 為什么用10進(jìn)制?
是因?yàn)?人的生理結(jié)構(gòu)

計(jì)算機(jī)中 使用2進(jìn)制
電燈、開關(guān)等電器 有兩種狀態(tài)
是因?yàn)?計(jì)算機(jī)的生理結(jié)構(gòu)
先回顧一下 之前編碼的 歷史
編碼
編碼是 絞絲旁的
可以追溯 到有 文字之前

結(jié)繩 為約
事大 大結(jié)其繩
事小 小結(jié)其繩
上古 結(jié)繩而治
后世圣人 易之以書契
八卦
事 都往繩子上 系
記住數(shù)字 到底是幾
在繩子上 系住了
這事情就算是 記住了
留下了 紀(jì)錄

以后把繩子 掛出來
進(jìn)行 比較、判斷
這就是 卦
經(jīng)典的卦
三個(gè) 位置
可以表示 八種狀態(tài)
事情
都在這八種模式下
普遍聯(lián)系
千變?nèi)f化
這就是八卦
現(xiàn)代數(shù)字 如何編碼 呢?
編碼格式 演化
最早電報(bào)時(shí)代
數(shù)字編碼 是 摩斯電碼

右下角
是數(shù)字的 編碼
長短空
掌握節(jié)奏
控制波特率
全靠發(fā)報(bào)人
每個(gè)人 都是
自己人工 編碼解碼
然后進(jìn)入到
電傳打字機(jī)時(shí)代
博多碼
電傳打字機(jī) 編碼
Letter
Figure
0
1
只有兩種狀態(tài)
有控制字符
Figure 包含數(shù)字

這些編碼
可以 存儲在 紙帶上
只有大寫 沒有小寫
符號 不是很豐富
是一種 5-bit 的編碼
ibm 的企圖心
1790s 末
ibm 的前身
拿到了 美國人口統(tǒng)計(jì)局的 巨大訂單
在此之前
無論是身份、存款、地產(chǎn)靠的都是紙質(zhì)的契約
計(jì)算機(jī)剛剛起步
更沒有相互聯(lián)通的數(shù)據(jù)中心了

ibm想要用計(jì)算機(jī)進(jìn)行統(tǒng)計(jì)
當(dāng)時(shí)用的是 采集卡片
就是去 挨家挨戶的 問人家
然后 打卡片打孔
在當(dāng)年
上門查戶口
是很明顯的冒犯
年齡
這統(tǒng)計(jì)里面涉及到 統(tǒng)計(jì)
計(jì)數(shù)
有數(shù)字
就可以對 性別、年齡、地區(qū)
分類匯總
而且要 顯示出來

這紙帶上 有很多位置
要么是 打了孔
要么是 沒打孔
二進(jìn)制
打孔卡 本質(zhì)上是
一種二進(jìn)制的 存儲方式

通過探針 訪問這些打卡孔
可以得到 當(dāng)前位置上 二進(jìn)制的值
想要表示
10
個(gè)數(shù)字字符的 話?要使用 多少位
2進(jìn)制數(shù)
呢?
編碼十個(gè)數(shù)目字
想要把 10個(gè)數(shù)字 都編碼
3位 2進(jìn)制數(shù) 不夠
至少 4位 2進(jìn)制數(shù)

就算有了 4位二進(jìn)制數(shù)
究竟如何 編碼 呢?
標(biāo)準(zhǔn) 紛爭
同樣是表示 10個(gè)數(shù)字
有不同的 編碼方式

不同編碼 表示的范圍 也不一樣
有的是 為了表示的數(shù)字 更多
有的是 為了可以表示負(fù)數(shù)
還有的是 為了加密
各種編碼之間轉(zhuǎn)化 也需要成本
為了數(shù)據(jù) 交換方便
編碼 還是得
統(tǒng)一
到底統(tǒng)一到 什么編碼方式 呢?
BCD碼
最終 統(tǒng)一的編碼
BCD碼
Binary Coded Decimal
8421碼

這個(gè)其實(shí)比較好理解

使用的是 十進(jìn)制數(shù)字
對應(yīng)的 二進(jìn)制數(shù) 形態(tài)
BCD碼 就叫 8421碼
四位 分別代表 8、4、2、1
8421碼
最終數(shù)字領(lǐng)域的 編碼統(tǒng)一到
BCD碼
Binary-Coded Decimal
也叫8421碼
用最簡單的 編碼方式實(shí)現(xiàn)了 統(tǒng)一
對應(yīng)的數(shù)值
8421
點(diǎn)明了 每位二進(jìn)制數(shù)

這種 編碼
純純的
2進(jìn)制數(shù)
形態(tài)其實(shí) 就是
數(shù)字表示
下圖中HMS的個(gè)位數(shù)字 就是 8421編碼
從上到下 總共4個(gè)二進(jìn)制位
分別代表8421
豎著一溜 就是一個(gè)數(shù)字

小時(shí)H 總共兩位
最大的數(shù)字就是9
不會超過10
總共需要4位
數(shù)值為(0)×20+(0)×20 = 0
最大的小時(shí)數(shù) 為24
十位數(shù)值 不會超過2
所以 兩位就夠
數(shù)值為(0)×20+(1)×20 = 1
兩位二進(jìn)制數(shù)可 以表示0-3
H十位
H個(gè)位
小時(shí)的 總體數(shù)值為10
分鐘和秒鐘
邏輯類似
根據(jù) 這個(gè)編碼
當(dāng)時(shí)的 輸出設(shè)備
就可以 輸出到
輝光鐘
輝光鐘 是一種較為原始的 輸出設(shè)備
輸出的結(jié)果 是10進(jìn)制數(shù)字形態(tài)
畢竟作為人類 讀二進(jìn)制數(shù)字 比較費(fèi)勁
12根管腳
數(shù)字是幾
幾就亮

后來有了led之后
出現(xiàn)了 seg-7
七位數(shù)碼管
七位數(shù)碼管
計(jì)算機(jī)內(nèi)部
得到具體二進(jìn)制數(shù)字

然后根據(jù)二進(jìn)制數(shù)字
得到數(shù)碼管的led狀態(tài)

字型是如何生成的呢?
led編碼
七位數(shù)碼管
有7個(gè)led燈

將每個(gè)燈
進(jìn)行編碼
BCD碼在今天
在今天的
ascii
中是
0x30-0x39
數(shù)字字符對應(yīng)的字節(jié)

0x30-0x39
的后4位
也還是 BCD編碼10進(jìn)制數(shù)字
進(jìn)入 二進(jìn)制的計(jì)算機(jī)世界
就是這樣編碼
那么
字母又是 怎么進(jìn)入數(shù)字世界的 呢?
先去總結(jié)一下BCD
總結(jié)
這次 回顧了
數(shù)字 進(jìn)入二進(jìn)制世界的 過程
采用的編碼是BCD
也叫8421碼
十進(jìn)制數(shù)的 二進(jìn)制形態(tài)
Binary Coded Decimal
數(shù)字的 輸出形式
輝光管
數(shù)碼管
除了數(shù)字 之外
還有 字母
字母 是如何編碼進(jìn)入計(jì)算機(jī)世界的 呢???
我們下次再說!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
視頻->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy