www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式微處理器
[導(dǎo)讀]理工科出身的我,很容易想到,陰陽便是0和1,陰陽的相交,即0和1的組合,便可產(chǎn)生萬物(計算機里面的一切)。

1. 中國古老的陰陽八卦

首先我們看看《易傳·系辭上傳》,“易有太極,是生兩儀,兩儀生四象,四象生八卦?!睆囊韵逻@個圖就很好理解:

細(xì)心的你也許會發(fā)現(xiàn),這是二進(jìn)制的級數(shù)增長,這不就是1,2,4,8么!

再看看,《道德經(jīng)》:道生一,一生二,二生三,三生萬物。
這段話,其實跟《易傳》的很像,意思是:

道是獨一無二的,道本身包含陰陽二氣,陰陽二氣相交而形成一種適勻的狀態(tài),萬物在這種狀態(tài)中產(chǎn)生。

理工科出身的我,很容易想到,陰陽便是0和1,陰陽的相交,即0和1的組合,便可產(chǎn)生萬物(計算機里面的一切)。
很多書都講這是古人的宇宙生成論或者是樸素的哲學(xué)概念,但這跟計算機里面的二進(jìn)制原理為什么這么相似,這么巧合?

2. 過去的信息傳遞
在沒有電話和計算機的年代,人們是怎么記錄或傳遞信息的?
狼煙烽火
用來傳遞敵情(有和無)

類似的,還有紙鳶(風(fēng)箏)?,F(xiàn)在中國風(fēng)箏有倆流派,即“北濰坊,南陽江”。

結(jié)繩

人們用來計數(shù)記事和傳遞信息。文字產(chǎn)生之前人們用來記數(shù)記事和傳遞信息的方法。相傳大事打大結(jié),小事打小結(jié)。
擊鼓鳴金
看《三國演義》就會知道,里面多次提到擊鼓和鳴金。不同的方式和節(jié)奏傳遞不同的信息。
旗語
在軍事上也用的非常多。

故夜戰(zhàn)多火鼓,晝戰(zhàn)多旌旗,所以變?nèi)酥恳病?/p>

《孫子兵法》
諸如此類的,還有很多很多,如飛鴿傳書、魚傳尺素等。

3. 近現(xiàn)代的電子信息
首先看看 電報

歐洲的科學(xué)家在18世紀(jì)逐漸發(fā)現(xiàn)電的各種特質(zhì)。同時開始有人研究使用電來傳遞訊息的可能。早在1753年,一名英國人便提出使用靜電來拍發(fā)電報。

百度百科
還有 摩斯密碼

摩爾斯電碼也被稱作摩斯密碼,是一種時通時斷的信號代碼,通過不同的排列順序來表達(dá)不同的英文字母、數(shù)字和標(biāo)點符號。它發(fā)明于1837年,是一種早期的數(shù)字化通信形式。不同于現(xiàn)代化的數(shù)字通訊,摩爾斯電碼只使用零和一兩種狀態(tài)的二進(jìn)制代碼,它的代碼包括五種:短促的點信號“?”,讀“滴”(Di)保持一定時間的長信號“—”,讀“嗒”(Da)表示點和劃之間的停頓、每個詞之間中等的停頓,以及句子之間長的停頓。

百度百科
電子計算機
到1946年,世界第一臺電子計算機誕生了。它是一個龐然大物,用了18000個電子管,占地170平方米,重達(dá)30噸,耗電功率約150千瓦,每秒鐘可進(jìn)行5000次運算。
這個功能性能,從現(xiàn)在看來雖然很渣,但是其誕生具有劃時代意義。
發(fā)明計算機的同學(xué)們用8個晶體管的“通”或“斷”組合出一些狀態(tài)來表示世間萬物。
在這里,不得不提一個人——馮·諾依曼。他是匈牙利裔美籍?dāng)?shù)學(xué)家、物理學(xué)家、計算機科學(xué)家,在計算機、博弈論、核武器和生化武器等領(lǐng)域的全才之一,被后來人為“計算機之父”和“博弈論之父”。
我們今天用到的計算機,都是基于馮諾依曼體系結(jié)構(gòu)的。
4. 字節(jié)
講了這么多,現(xiàn)在開始講字節(jié),開始之前,先復(fù)習(xí)下幾個概念:

比特(bit):也可稱為“位”,是計算機信息中的最小單位,是 binary digit(二進(jìn)制數(shù)位)?的?縮寫,指二進(jìn)制中的一位?

字節(jié)(Byte):計算機中信息計量的一種單位,一個位就代表“0”或“1”,每8個位(bit)組成一個字節(jié)(Byte)?

字符(Character):文字與符號的總稱,可以是各個國家的文字、標(biāo)點符號、圖形符號、數(shù)字等?

字符集(Character Set):是多個字符的集合?

編碼(Encoding):?信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程?

解碼(decoding):?編碼的逆過程?

字符編碼(Character Encoding):?按照何種規(guī)則存儲字符

我們知道字節(jié)(Byte)是計算機信息存儲的基本單位,它由8個位(bit)組成。但是,為什么是8個位,而不是三個四個,也不是九個十個?
網(wǎng)上很多都說是因為ASCII,其實不是,這不是因果關(guān)系。
位(bit),一個位只有兩種狀態(tài),0和1,可表示晶體管的“通”和“斷”,計算機的存儲和邏輯就是通過這些晶體管的“通”和“斷”來表達(dá)。
早期的計算機是用來做數(shù)學(xué)運算的,數(shù)字就0~9,其實4個bit就足夠了,可以通過BCD碼的方式來表達(dá)數(shù)字。
但是,不能用4個bit來表示一個Byte啊,4個bit表示數(shù)字還好,其他字母呢,那得用兩個byte來表示,跨byte訪問,會降低效率啊。
歷史上,早期的Byte的大小沒有固定的標(biāo)準(zhǔn),其很大程度依賴于硬件設(shè)計,使用1到48位的情況都有,但比較常用的是6位(BCDIC)。使用6位和9位的計算機在19世紀(jì)60年代非常常見,這些系統(tǒng)通常具有12、18、24、30、36、48或60位的存儲。

4位和6位也是在早期比較常用的,它們當(dāng)時被用在美國陸軍(FIELDATA)和海軍常見的可打印圖形模式。這些表示包括字母數(shù)字字符和特殊的圖形符號。這些集合在1963年擴展為7位編碼,稱為美國信息交換標(biāo)準(zhǔn)代碼(ASCII),稱為聯(lián)邦信息處理標(biāo)準(zhǔn),取代了1960年代美國政府和大學(xué)不同部門使用的不兼容的電傳打印機代碼。?這個就是ASCII的由來。呵呵,ASCII字符其實用7位就夠了,不是8位哦。

那么今天的8位Byte是怎么來的呢?
這就要提到System/360了。在十九世紀(jì)60年代初期,IBM同時積極參與ASCII標(biāo)準(zhǔn)化,同時在System/360產(chǎn)品線中引入了八位擴展二進(jìn)制編碼十進(jìn)制交換碼(EBCDIC),這是對六位二進(jìn)制編碼十進(jìn)制(BCDIC)的擴展。IBM突出的表現(xiàn),逐漸就讓8位Byte普及開來了。但是呢,這個EBCDIC和ASCII是不一樣的哦。
十九世紀(jì)70年代八位微處理器的發(fā)展普及了這種存儲容量。早期的計算機如Intel的8088、8086是可以通過4位訪問的哦,那時叫做半字節(jié)。
也許你用過8位單片機,但是你聽說過4位單片機嗎?哈哈!
5. 進(jìn)制
我們最熟知的是十進(jìn)制,從小接觸的數(shù)字和算術(shù)計算用的都是十進(jìn)制。然后學(xué)到信息計算機相關(guān)知識了,就開始接觸或認(rèn)識二進(jìn)制。上面也提到了,陰陽八卦用的就是二進(jìn)制。其實二進(jìn)制普遍存于大自然中,也存在于生活中。
那么除了十進(jìn)制、二進(jìn)制,還有哪些進(jìn)制呢?八進(jìn)制、十六進(jìn)制等等。這些都是程序員熟悉的。
講了這么多,什么是進(jìn)制?
進(jìn)制就是進(jìn)位計數(shù)制,是人為定義的帶進(jìn)位的計數(shù)方法。十進(jìn)制是逢十進(jìn)一,二進(jìn)制是逢二進(jìn)一,十六進(jìn)制是逢十六進(jìn)一,那么X進(jìn)制就是逢X進(jìn)一了。
進(jìn)制在數(shù)字上怎么表示?
也很簡單,進(jìn)制小于10的,用阿拉伯?dāng)?shù)字就很容易表達(dá)出來。如:
十進(jìn)制:0, 1, 2, 3,?4, 5, 6, 7, 8,?9,? 10。這個10就是逢十進(jìn)一變成兩位數(shù)了。
八進(jìn)制: 0 , 1, ?2, ?3,? 4, ?5, 6, ?7,? 10。 這個10就是逢八進(jìn) 一變成兩位數(shù)了,按數(shù)值計算,這個八進(jìn)制的10相當(dāng)于十進(jìn)制的9,是表達(dá)形式變了 。
二進(jìn)制:0, 1,? 10。 這個10就是逢二進(jìn) 一變成兩位數(shù)了
那么進(jìn)制大于10的呢,如十六進(jìn)制怎么表示?
十六進(jìn)制: 0 , 1, ?2, ?3,? 4, ?5, 6, ?7,? 8 ,? 9,?A, B, C, D, E, F, 10。 這個10就是逢十六進(jìn) 一變成兩位數(shù)了。因為阿拉伯?dāng)?shù)字沒有單一數(shù)字表達(dá)的10, 11, 12, 13, 14, 15,所以采用A, B, C, D, E, F來表達(dá),只是表達(dá)形式不一樣而已。
上面我們提到了個BCD碼,啥是BCD碼?十六進(jìn)制又是什么鬼?
十進(jìn)制
二進(jìn)制
八進(jìn)制
十六進(jìn)制
0
0
0
0
1
1
1
1
2 10
2 2
3
11 3
3
4
100
4
4
5
101
5
5
6
110
6
6
7
111 7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14 C
13
1101
15
D
14 1110
16
E
15
1111
17
F
16
10000
100
10
于是,可以約定,這些進(jìn)制的表達(dá)方式,不然10到底是幾進(jìn)制的表達(dá)的數(shù)字是多少都不知道。
二進(jìn)制用B(Binary)來表達(dá),如1001B,但是編程語言中最小的單位是Byte,所以沒有約定表達(dá)二進(jìn)制的方法。
八進(jìn)制用 O (Oct) 來表達(dá),寫成123O?這個O和0寫法相近,會讓人誤解的,好困惑哦。在編程語言中,通常在數(shù)字前面加個0,即0123表示八進(jìn)制的123,注意跟十進(jìn)制的123不相等哦。
十六進(jìn)制用H(Hex)表示,如2BH,編程語言中用0x開頭來表示,如0x2B。
這里為什么提二進(jìn)制、十進(jìn)制、八進(jìn)制和十六進(jìn)制呢?十進(jìn)制剛才說了,是最常見接觸最多的進(jìn)制,而二進(jìn)制是計算機的基本進(jìn)制,但計算機通常以8 Bit的Byte來作為基本單位,那么一個Byte的剛好可以表示16個數(shù),所以,十六進(jìn)制是非常常用的,而八進(jìn)制就是對于半個Byte了。
好了,問題來了,除了這些常見了,有沒有三進(jìn)制呢,十七進(jìn)制呢?答案是有的,隨你喜歡,多少都行。
Python中有個 int的內(nèi)置函數(shù),可以轉(zhuǎn)換各種進(jìn)制。以下看看100這個數(shù)在各個進(jìn)制中對應(yīng)的十進(jìn)制數(shù)值是多少。
>>> int('100', 2)4>>> int('100', 3)9>>> int('100', 4)16>>> int('100', 7)49>>> int('100', 8)64>>> int('100', 10)100>>> int('100', 16)256>>> int('100', 17)289>>> int('100', 35)1225>>> int('100', 36)1296>>> int('100', 55)Traceback (most recent call last): File "", line 1, in <module>ValueError: int() base must be >= 2 and <= 36
這個內(nèi)置函數(shù) int只能算大于等于2并小于等于36進(jìn)制的數(shù)。
6.?BCD碼
上文提到了個BCD碼,這是什么鬼?

BCD碼(Binary-Coded Decimal?),用4位二進(jìn)制數(shù)來表示1位十進(jìn)制數(shù)中的0~9這10個數(shù)碼,是一種二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的十進(jìn)制代碼。

如果不懂這個概念,要認(rèn)真讀幾次上面這段話。簡單地理解為,1位十進(jìn)制數(shù)碼用4位二進(jìn)制數(shù)來表示,但根據(jù)這1位十進(jìn)制數(shù)碼和4位二進(jìn)制數(shù)的對應(yīng)關(guān)系(或者表達(dá)關(guān)系)不一樣而有不同的形式,如8421碼、2421碼、5421碼余3碼、余3循環(huán)碼、格雷碼,其中前面三種是有權(quán)碼,后面三種是無權(quán)碼。

有權(quán)碼,自然二進(jìn)制代碼是按照二進(jìn)制代碼各位權(quán)值大小,以自然向下加一,逢二進(jìn)一的方式來表示數(shù)值的大小所生成的代碼。?

顯然,n位自然二進(jìn)制代碼共有2^n種狀態(tài)取值組合,由于代碼中各位的位權(quán)值分別為2^3,2^2,2^1,2^0,即8421,所以也稱為8421碼。這樣每位二進(jìn)制碼元都有確定位權(quán)值的編碼,稱為有權(quán)碼,屬于恒權(quán)代碼。相應(yīng)的,沒有確定位權(quán)值的編碼叫無權(quán)碼,也叫非恒權(quán)代碼。

百度百科——有權(quán)碼
8421碼
8421 BCD碼是最基本和最常用的BCD碼,0~9的8421碼與4位自然二進(jìn)制形式完全一樣,即用0000~1001分別代表它所對應(yīng)的十進(jìn)制數(shù)。要計算一個多位的8421碼可以每位單獨拆分出來,并算出對應(yīng)的二進(jìn)制碼(不足四位前面補0),然后拼起來即可。舉個例子:
8421碼:235,拆分出來是2、3、5,分別對應(yīng)二進(jìn)制是0010、0011、1001,拼起來是0010 0011 1001。

5421和2421

5421 BCD碼和2421 BCD碼,這兩種有權(quán)BCD碼中,有的十進(jìn)制數(shù)碼存在兩種加權(quán)方法,例如,5421 BCD碼中的數(shù)碼5,既可以用1000表示,也可以用0101表示;2421 BCD碼中的數(shù)碼6,既可以用1100表示, 也可以用0110表示。這說明5421 BCD碼和2421 BCD碼的編碼方案都不是惟一的。
下面列舉 8421碼、2421碼、5421碼和一位十進(jìn)制數(shù)的對照關(guān)系。
十進(jìn)制數(shù) 8421碼 5421碼 2421碼
0 0000 0000 0000
1 0001 0001 0001
2 0010 0010 0010
3 0011 0011 0011
4 0100 0100 0100
5 0101 1000 1011
6 0110 1001 1100
7 0111 1010 1101
8 1000 1011 1110
9 1001 1100 1111
余3碼和余3循環(huán)碼
余3碼實很簡單,是8421 BCD碼的每個碼組加3(0011)形成的。為什么有余3碼這個東西呢,實際上其常用于BCD碼的運算電路中。
余3循環(huán)碼實際上是變權(quán)碼,每一位的1并不代表固定的數(shù)值,十進(jìn)制數(shù)的余3循環(huán)碼就是取4位格雷碼中的十個代碼組成。
那么什么是格雷碼?
格雷碼
格雷碼(Gray Code),其由很多曾用名,如格萊碼、戈萊碼、循環(huán)碼、反射二進(jìn)制碼、最小差錯碼等。
格雷碼有很多種表現(xiàn)形式

為什么要用格雷碼呢?

格雷碼是一種具有反射特性和循環(huán)特性的單步自補碼,其循環(huán)和單步特性消除了隨機取數(shù)時出現(xiàn)重大錯誤的可能,其反射和自補特性使得對其進(jìn)行求反操作也非常方便,所以,格雷碼屬于一種可靠性編碼,是一種錯誤最小化的編碼方式,因此格雷碼在通信和測量技術(shù)中得到廣泛應(yīng)用。?

格雷碼屬于可靠性編碼,是一種錯誤最小化的編碼方式。因為,雖然自然二進(jìn)制碼可以直接由數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號,但在某些情況,例如從十進(jìn)制的3轉(zhuǎn)換為4時二進(jìn)制碼的每一位都要變,能使數(shù)字電路產(chǎn)生很大的尖峰電流脈沖。

格雷碼Gray Code詳解(https://www.cnblogs.com/zhuruibi/p/8988044.html)
怎么計算格雷碼?
二進(jìn)制碼→格雷碼(編碼):
此方法從對應(yīng)的n位二進(jìn)制碼字中直接得到n位格雷碼碼字,步驟如下:
  1. 對n位二進(jìn)制的碼字,從右到左,以0到n-1編號
  2. 如果二進(jìn)制碼字的第i位和i+1位相同,則對應(yīng)的格雷碼的第i位為0,否則為1(當(dāng)i+1=n時,二進(jìn)制碼字的第n位被認(rèn)為是0,即第n-1位不變)


-END-


來源 | 嵌入式軟件實戰(zhàn)派

作者 |?實戰(zhàn)派掌門


|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|

|?如有侵權(quán),請聯(lián)系刪除?|


【1】飛機上一般是什么操作系統(tǒng)?

【2】高速CAN、容錯CAN、LIN總線有什么區(qū)別?

【3】鴻蒙和安卓,到底有什么區(qū)別?

【4】大佬終于把鴻蒙OS講明白了,收藏了!

【5】必看!影響嵌入式薪資的各種原因!



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉