大小端模式模式實測

2021-09-16 20:54:05 字數 1823 閱讀 9491

大端模式,是指在記憶體的低位址中儲存資料的高位元組;而小端模式,是指在記憶體的低位址中儲存資料的低位元組。

分析可知1:既然資料分高位元組、低位元組,說明只有資料格式是2位元組以上的,才有大小端模式,比如word、dword等;而byte型別資料是不分大小端模式的。

分析可知2:有分析1可知,byte型別資料是不分大小端模式,則資料格式都是統一的。即,位址由小向大增加,而資料從高位往低位放;這和我們的閱讀習慣一致。這對於大小端都是統一的格式。

這些有點類似can報文:只要是跨了2個即以上位元組數的can報文,都要考慮是intel格式,還是motorola格式,此時intel格式就像小端;motorola格式,就像大端;

intel格式:

motorola msb格式:

motorola lsb格式:

舉例

下面以unsigned int value = 0x12345678

為例,分別看看在兩種位元組序下其儲存情況,我們可以用

unsigned char buf[4]

來表示value

big-endian:

低位址

---------------

buf[0] (0x12) --高位元組

buf[1] (0x34)

buf[2] (0x56)

buf[3] (0x78) --低位元組

---------------

高位址

little-endian:

低位址

--------------

buf[0] (0x78) --低位元組

buf[1] (0x56)

buf[2] (0x34)

buf[3] (0x12) --高位元組

---------------

高位址

此外,對於motorola msb和motorola lsb的區別,可以參見上圖,兩者在資料的分布和處理上沒有區別,唯一的區別在於對「start bit」的叫法上。比如乙個12bit的數字,採用motorola msb和motorola lsb格式,都是分布在從bit8~bit11、bit16~bit23的位址上,但是motorola msb格式說start bit為msb所在的位位址,所以為start bit:11;但是motorola lsb格式說start bit為lsb所在的位位址,所以為start bit:16。(intel的start bit都是按lsb所在的bit位址,所以上圖中intel的start bit:12。)

intel格式與motorola格式的區別

大小端模式

偶 注意 大小端的高低位資料是按位址來計算的。如0x1001,10是高位位元組,01是低位位元組。char s abcd a是高位位元組 所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順...

大小端模式

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...

大小端模式

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