大端小端與MSB和LSB

2021-08-10 14:04:36 字數 1026 閱讀 7173

大端(big-endian):資料的高位位元組存放在位址的低端 低位位元組存放在位址高階;
小端舉個簡單而又容易理解的例子:
uint_16 temp = 0x12345678;
位址

大端小端0

0x00001

0x12

0x78

0x00002

0x34

0x56

0x00003

0x56

0x34

0x00004

0x78

0x12

其中的位址,一般由編譯器分配,也可在程式中自行指定。從上表中,可以清晰的看到,大小端是以位元組為單位進行資料儲存的方式

。大端通俗的理解就是賦值數從左自右;小端則是從右自左。

而與大小端類似的,還有msb和lsb儲存方式。
lsb(least significant bit),意為最低有效位;
msb

(most significant bit),意為最高有效位。

通常,乙個晶元的管腳中,對於乙個多位元的訊號,比如32根的位址線,從低開始按0到31編個號。msb就是31,lsb就是0。那麼如果標記為:addr[31:0]就是msb first的方式,如果標記為addr[0:31]就是lsb first的方式。

lsb和msb是以機器碼為單位進行排序。

這樣就可以顯而易見看出,大小端和lsb msb本質區別是在排序的單位不同,在晶元中應當留意暫存器是否有lsb或者msb的字樣,有的話應當對資料的序列進行改寫,這幾天就被這坑,坑了一段時間,因為之前一直沒有接觸過lsb和msb,可是接觸過大小端的概念,先入為主的想法,讓我在乙個簡單的問題困擾許久。現在才發現理論知識是相當重要,特別是許多資料手冊上它們對一些常識是有時候沒有進行說明的,因此,這就需要我們平時多積累,網上也是沒有大神特別整理這些常識性的東西。開源資料較少,這個我感覺就是硬體程式設計比軟體程式設計比較明顯雞肋的地方吧。。。

大端小端與LSB和MSB的小故事

大端 big endian 資料的高位位元組存放在位址的低端 低位位元組存放在位址高階 小端 little endian 資料的高位位元組存放在位址的高階 低位位元組存放在位址低端 舉個簡單而又容易理解的例子 uint 16 temp 0x12345678 位址 大端小端0 0x00001 0x12...

大端與小端

網際網路使用網路位元組順序採用大端模式進行編址,大端儲存也稱為網路位元組序,因為tcp ip包在網路中傳輸時都要求以這種次序,以其他形式儲存資料的機器 主機位元組順序根據處理器的不同而不同,如powerpc處理器,使用大端模式,而pentuim處理器使用小端模式 則必須在傳送資料之前把首部轉換成網路...

大端與小端

端模式 endian 的這個詞出自 jonathan swift 書寫的 格列佛遊記 這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為 big endian 從尖頭開始將雞蛋敲開的人被歸為 littile endian 小人國的內戰就源於吃雞蛋時是究竟從大頭 big ...