mysql 大小端 記憶體大小端對齊

2021-10-20 22:20:53 字數 773 閱讀 6459

不同的 cpu 有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序

最常見的有兩種

le little-endian

最符合人的思維的位元組序

位址低位儲存值的低位

位址高位儲存值的高位

怎麼講是最符合人的思維的位元組序,是因為從人的第一觀感來說

低位值小,就應該放在記憶體位址小的地方,也即記憶體位址低位

反之,高位值就應該放在記憶體位址大的地方,也即記憶體位址高位

be big-endian

最直觀的位元組序

位址低位儲存值的高位

位址高位儲存值的低位

為什麼說直觀,不要考慮對應關係

只需要把記憶體位址從左到右按照由低到高的順序寫出

把值按照通常的高位到低位的順序寫出

兩者對照,乙個位元組乙個位元組的填充進去

例子:在記憶體中雙字 0x01020304(dword) 的儲存方式

記憶體位址

4000 4001 4002 4003

le 04 03 02 01

be 01 02 03 04

例子:如果我們將 0x1234abcd 寫入到以 0x0000開始的記憶體中,則結果為

big-endian little-endian

0x0000 0x12 0xcd

0x0001 0x23 0xab

0x0002 0xab 0x34

0x0003 0xcd 0x12

x86 系列 cpu 都是 little-endian 的位元組序 .

記憶體對齊及大小端

一 記憶體對齊問題 先看乙個面試題 c union s struct b long a union s 求sizeof union s 24 sizeof struct b 32 有幾個問題需要回答,記憶體對齊的規則是什麼?這個union 物件在記憶體中資料是怎麼排列的?大端小端都一樣嗎?1 記憶體...

大小端對齊

不同的 cpu 有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 基本知識,回顧一下 le little endian 最符合人的思維的位元組序 位址低位儲存值的低位 位址高位儲存值的高位 怎麼講是最符合人的思維的位元組序,是因為從人的第一觀感來說 低位...

大小端對齊

int num int abcd printf x n num 閒來無事,寫了上面的兩句 num會列印出什麼呢?一般分析 根據ansii碼,轉換成十六進製制,為61626364 可是輸出結果為 64636261 我們可能會懷疑指標num,printf出位址後,它和a 0 的位址一樣。然後,可能會懷疑...