大端存儲小端存儲
A. 徹底弄懂什麼是大小端
表示數據在存儲器中的存放順序
小端模式:數據的高位元組,存放在高地址中。計算機讀取數據的方向,是從高地址頌尺開始讀取的;
大端模式:數據的高位元組,存放在低地址中。計算機讀取數據的方向,是從低地址開始讀取的;
記憶口訣:「小端低低」
iOS都是小端模式。
列1:
要存放的數據:0x12345678
低位元組為:0x12
高位元組為:0x78
小端模式計算機讀取數據方向:<---
大端模式計算機讀取數據方向:--->
小端模式:
內存中存放順序:0x12,0x34,0x56,0x78
讀取數據方向:從高地址開簡櫻迅始讀取數據
讀取結果:0x78,0x56,0x34,0x12
大端模式:
內存中排存放序:0x78,0x56,0x34,0x12
讀取數據方向:從低地址開始讀取數據
讀取結果:0x78,0x56,0x34,0x12
列2:
要存放的數據:0x00000004
低位元組為:0x04
高位元組為:0x00
小端模式:
內存中存放順序:0x04,0x00,0x00,0x00
讀取數據方向:從高地址開始讀取數據
讀取結果:0x00000004
大端模式:
內存中排存放序:0x00,0x00,0x00,0x04
讀取數據方向:從低地址開始讀取數據
讀取結果:0x00000004
由於各硬體商,按自己的構想設計硬體,導致了硬體設計不同,工作原理也有差異。所以有的硬體採用了大端模式,有的硬體採用了小端模攔此式。都認為各自採用的模式是更優秀;
B. 大小端存儲
在計算機系統中,存儲是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組=8bit。在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器)。對於位數大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,如何安排多個位元組的存儲,這就有了大端存儲模式和小端存儲模式。
小端:較高的有效位元組存放在較高的的存儲器地址,較低的有效位元組存放在較低的存儲器地址。
大端:較高的有效位元組存放在較低的存儲器地址,較低的有效位元組存放在較高的存儲器地址。
如果將一個16位的整數0x1234存放到一個短整型變數(short)中。這個短整型變數在內存中的存儲在大小端模式由下表所示。
C語言判斷大小端模式
方法一:
voidIsBigEndian()
{
shortinta=0x1122; //十六進制,一個數值佔4位charb = *(char*)&a;//通過將short(2位元組)強制類型轉換成char單位元組,b指向a的起始位元組(低位元組)
if( b ==0x11) //低位元組存的是數據的高位元組數據
{
//是大端模式
}
else
{
//是小端模式
}
}
方法二:
voidIsBigEndian() //原理:聯合體union的存放順序是所有成員都從低地址開始存放,而且所有成員共享存儲空間
{
uniontemp
{
shortint a;
char b;
}temp;
temp.a=0x1234;
if(temp.b==0x12) //低位元組存的是數據的高位元組數據
{
//是大端模式
}
else
{
//是小端模式
}
}
參考:https://www.jianshu.com/p/152268b0ea19
C. 大端存儲和小端存儲哪個與人閱讀有關
大端存儲。
1、大端存舉衡搏帆儲方式和閱讀習慣相同,可以直接讀作正銀做12345678。
2、而小端,則與邏輯習慣相同,因為小端存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和邏輯方法一致。
D. 簡述大端存儲法和小端存儲法,並說明信息存儲器對嵌入式設計的影響
摘要 你好,大端排序的好處是接收數據的程序可以優先得到數據的最高位,以便快速反應。