關於大端小端的概念,小端:資料的高位位元組存放在高位址內,資料的低位位元組存放在低位址內。
典型的體系結構中,乙個字是4個位元組,那麼資料0x0a0b0c0d,在小端機器中從位址到高址的存放方式為:0x0d,0x0c,0x0b,0x0a;
在大端模式中從位址到高位址的存放方式為:0x0a,0xb,0x0c,0x0d;
通用處理器中,arm通常是大端模式,x86體系機構是小端模式。
如果讓你判斷乙個處理器的型別,你該如何編碼實現呢,如果是用組合語言,那這是一件非常容易的事情,向指定位址寫乙個資料,
再逐個位元組的讀出來,就能很容易判斷出大小端。那麼用c語言如何實現呢?
方法一、通過讀取同一位址的整型資料和字元資料來區別大端和小端
#includevoid endianness()
else }
void main()
方法二、通過union的共享記憶體特性,來判斷機器型別
#includeunion
dataunion;
void endianness()
else }
void main()
方法三、linux的開發者,在核心中只用這樣兩句話,就判斷了機器型別
#includestatic union
endian_test = };
#define endianness ((char)endian_test.mylong)
void main()
如何判斷機器是大端還是小端
這是一篇沒多少新意的文章,對big endian和little endian熟悉的人沒必要看,免得浪費時間。1 概念 所謂大端小端,指的是對於多位元組的資料型別 比如,int 在記憶體中存放的位元組順序。小端是指低位址的位元組存放的是資料的低位,高位址位元組存放的是資料的高位。大端是指低位址位元組存...
判斷系統CPU是大端還是小端
所謂的大端小端就是cpu在儲存資料的時候是從高位址開始儲存還是低位址開始儲存。例如在sizeof int 2的系統中,1 2 8 1 512 513,我們把這個值賦值給int ntemp 1 2 8 我們假定系統分配給變數ntemp的位址空間為 0x0000ff08到0x0000ff09,那麼0x0...
判斷大端小端
大端模式 big endian 和小端模式 little endian 在我們傳送資料的時候,我們首先要確定是大端還是小端模式來進行的,在接收方接收的資料必須知道資料是大端還是小端模式,才能正確地讀取和儲存資料起來,否則就會出錯。有些時候cpu公司用大端 c51微控制器 有些cpu用小端 arm 我...