大小端詳解

2021-08-21 03:37:46 字數 1245 閱讀 2765

前言:本篇文章介紹資料儲存的大小端模式,大小端模式起源於吃雞蛋的典故。

首先,我們看一下資料在記憶體是怎麼儲存的

從上邊我們可以看出a、b在計算機中儲存的是補碼,但是順序卻倒著的,這實際上就是小端儲存

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

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

例如:變數x在記憶體中的位址為0x0010,x的值為0x1122,那麼0x11為高位位元組序,而0x22為低位位元組序。對於大端儲存,將0x11放在低位址中,既0x0010,0x22則放在高位址中,既0x0011。小端模式剛好相反。

在計算機系統中,是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。我們常用的x86結構是小端模式,而keil c51則為大端模式。很多的arm,dsp都為小端模式。有些arm處理器還可以由硬體來選擇是大端模式還是小端模式。

①方法一
#include

int check_sys()

int main()

else

system("pause");

return

0; }

②方法二

聯合體型別特點:

//返回1表示小端

//返回0表示大端

}int main()

else

system("pause");

return

0; }

C語言之大小端詳解

什麼是大小端呢?如果學完c語言你還不知道這個東西那就說明基礎太差了。假設我們有下面這個例子 int main 那麼這個a在記憶體中是怎麼儲存的呢?編譯器給出的結果是 看到這個結果是不是有點懵逼,a這個變數值是1 在記憶體中儲存應該是0x 00 00 00 01才對啊,為什麼編譯器給出的卻是0x 01...

大小端詳解(通過C語言如何判斷)

大端 big endian 和小端 little endian 的定義 大端 高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。cpu對運算元的存放方式是從高位元組到低位元組。小端 低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。cpu對運算元的存放方式是從低位...

移動端詳解

由裝置型別 監測裝置特性表示式構成。語法 media 裝置型別 all screen and 條件表示式 注 and兩側必須有空格 not放在裝置型別的前面 反向選擇 排除某個範圍 ppi 每英吋所顯示畫素點的密度 ppi值越高 螢幕顯示越清晰 dpi 每英吋所顯示畫素點的個數 dpr 裝置畫素比例...