1. 程式人生 > >大端和小端區別-linux

大端和小端區別-linux

Little-Endian:低位位元組排放在記憶體的低地址端,高位位元組排放在記憶體的高地址端。

Big-Endian:高位位元組排放在記憶體的低地址端,低位位元組排放在記憶體的高地址端。

記憶方法:小端:低地址存放低位;大端高地址存放低位。(小順,大逆)

先解釋一下?

高地址、低地址:這個很明顯,地址大則是高地址,地址小則是低地址。

低位、高位:

從int型分析:0x00 12 34 56;從資料大小來判斷,從左到右分別是高位到低位。例如1000元,1當然是高位,0當然是低位。

由於這個int型是以十六進位制表示的,0x6則表示一個十六進位制位;

由於一個十六進位制佔用4位byte,也就是0xF等於0b1111(0b表示二進位制表示);

由於一個地址存放8位byte,也就是最大十六進位制數0xFF;

所有這個int型由4個地址存放。

如圖:小端模式


例如:

int a=0x 00 12 34 56;
printf("addr:0x%0x, dat:%0x\n", ((char *)&a)[0]);
printf("addr:0x%0x, dat:%0x\n", ((char *)&a)[1]);
printf("addr:0x%0x, dat:%0x\n", ((char *)&a)[2]);
printf("addr:0x%0x, dat:%0x\n", ((char *)&a)[3]);

輸出結果:[為小端,低地址存放低位]

addr: 0xb6af0cac, dat:56
addr: 0xb6af0cad, dat:34
addr: 0xb6af0cae, dat:12
addr: 0xb6af0caf, dat:00

相反則說明是大端

相關推薦

大端區別-linux

Little-Endian:低位位元組排放在記憶體的低地址端,高位位元組排放在記憶體的高地址端。 Big-Endian:高位位元組排放在記憶體的低地址端,低位位元組排放在記憶體的高地址端。 記憶方法:

大端位元組區別

大端:高位元組存放在低地址,低位元組存放在高地址 小端:高位元組存放在高地址,低位元組存在低 不過給我啟發的是,在裘宗燕翻譯的《程式設計實踐》裡,這對術語並沒有翻譯為“大端”和小端,而是“高尾端”和“低尾端”,這就好理解了:如果把一個數看成一個字串,比如11223344看成

大端區別

一、大小端名稱起源        Endian這個詞來源於Jonathan Swift在1726年寫的諷刺小說"Gulliver's Travels"(《格利佛遊記》)。該小說在描述Gulliver暢遊小人國時碰到了如下的一個場景。有一次因為對水煮蛋該從大的一端(Big-

大端(big endian little endian)

讀寫 pue 處理器 bsp 網絡 做的 tdi har power 一、大端和小端的問題 對於整型、長整型等數據類型,Big endian 認為第一個字節是最高位字節(按照從低地址到高地址的順序存放數據的高位字節到低位字節);而 Little endian 則相反,它認為

大端(Big endian and Little endian)

tro big ttl class erp 順序 通過 網絡 rpc 1.大端和小端的問題 ? 對於整型、長整型等數據類型,Big endian 人為第一個字節是最高位字節(按照從低地址到高地址的順序存放數據的高位字節到低位字節),而 Little endian 則相反,它

010 大端

ret out 模式 大端模式 小端 str char* main 大端 所謂的大端模式,是指數據的低位保存在內存的高地址中,而數據的高位,保存在內存的低地址中; 所謂的小端模式,是指數據的低位保存在內存的低地址中,而數據的高位保存在內存的高地址中。 #include "s

【C++】大端的理解

我的理解: 記憶體是以位元組為單位的,一個位元組是8位,也就是2位的16進位制,所以首先將資料轉成16進位制,比如下面例子中的0x12345678,就表示了4個位元組的資料。這裡要注意一點,如果將資料改成0x10,那麼這個還是4個位元組的資料,主要是位元組空間是由int所決定的,因此就

區分大端

如何區分大端和小端? 小端: FF FE開頭                低位元組在前 ,高位元組在後      

網路通訊之 位元組序轉換原理與網路位元組序、大端模式

     原因如下:網路協議規定接收到得第一個位元組是高位元組,存放到低地址,所以傳送時會首先去低地址取資料的高位元組。小端模式的多位元組資料在存放時,低地址存放的是低位元組,而被髮送方網路協議函式傳送時會首先去低地址取資料(想要取高位元組,真正取得是低位元組),接收方網路協議函式接收時會將接收到的第一個位元

輕鬆記住大端的含義(附對大端的解釋)

原文地址:http://www.cnblogs.com/wuyuegb2312/archive/2013/06/08/3126510.html   或許你曾經仔細瞭解過什麼是大端小端,也動手編寫了測試手頭上的機器上是大端還是小端的程式,甚至還編寫了大端小端轉換程式;但

大端、hton*ntoh*

1、TCP/IP網路傳輸使用大端的位元組序2、大端小端問題只有在表示的資料型別大於一個位元組的時候存在,對於char、byte型別的資料不需要考慮此問題3、目前大部分CPU都是小端4、如果網路兩端位元組序相同,可以不需要考慮位元組序,接收後直接按照資料型別強轉;如果兩端位元組

大端

基本概念 我們可以把計算機的記憶體抽像成一個大的陣列,在這個陣列中,包含了一個個的位元組元素。對於大小端的討論,我們可以認為記憶體的最小單元即是一個位元組(byte)。對於每個位元組,我們可以使用一個“索引”來標識,這個索引亦即我們平常所說的記憶體的地址。

【轉】輕鬆記住大端的含義(附對大端的解釋)

 轉自:http://www.cnblogs.com/wuyuegb2312/archive/2013/06/08/3126510.html        或許你曾經仔細瞭解過什麼是大端小端,也動手編寫了測試手頭上的機器上是大端還是小端的程式,甚至還編寫了大端小端轉換程式;

java 大端轉換

1.把小端資料轉換成int int i = ByteBuffer.wrap(fourBytes).order(ByteOrder.LITTLE_ENDIAN).getInt(); 2.把大端資料轉換成int int j = ByteBuffer.wrap(fourByte

大端的判斷及轉換

當前的儲存器,多以byte為訪問的最小單元,當一個邏輯上的地址必須分割為物理上的若干單元時就存在了先放誰後放誰的問題,於是端(endian)的問題應運而生了,對於不同的儲存方法,就有大端(big-endian)和小端(little- endian)兩個描述。 位元組排序按分

深入理解計算機系統-之-數值儲存(一)-CPU大端模式詳解

大端與小端 在嵌入式開發中,大端(Big-endian)和小端(Little-endian)是一個很重要的概念。 MSB與LSB 最高有效位(MSB)指二進位制中最高值的位元。在16位元的數字音訊中,其第1個位元便對16bit的字的數值有最大的

通過一句話記住大端序的區別

在軟體開發過程中,軟體開發人員都知道大端序和小端序的概念,但是在真正使用的時候,傻傻分不清兩種到底是怎麼儲存。 首先還是先看下基本概念: 1、大端模式:高位元組儲存在記憶體的低地址 2、小端模式:高位元組儲存在記憶體的高地址 舉例: var = 0x11223344,對於這個變數

如何區別大端位元組序位元組序

網路位元組序,高位高地址,低位低地址,屬於大端形式 主機位元組序,高位低地址,低位高地址,屬於小端形式 注:在沒有規定位元組序的情況下,powerpc架構預設為大端位元組序,arm架構預設為小端位元組序。 例:int *p=0x12345678H int a=0x11223344 p=&am

大端區別

問題 大端機和小端機的區別。 深入理解計算機系統裡面有如下的描述: 對於跨越多位元組的物件,我們必須建立兩個原則,這個物件的地址是什麼以及儲存器中如何排列這些位元組。對於第一個問題,幾乎在所有的機器上面,多位元組物件都被儲存為連續的位元組序列,因此物

大端格式格式儲存的區別

short int x;char x0,x1;x=0x1122;x0=((char*)&x)[0]; //低地址單元x1=((char*)&x)[1]; //高地址單元若x0=0x11,則是大端; 若x0=0x22,則是小端。-----------有時候,用C語言寫程式時需要知道是大端模式還是