導航:首頁 > 源碼編譯 > 編譯器大端格式和小端格式

編譯器大端格式和小端格式

發布時間:2023-04-01 02:35:39

① 大端模式、小端模式和MSB、LSB是一個概念嗎兩者有何區別

不是同一個概念。
大端模式:高位元組放入低地址。
小端渣旁模式:高位元組放入高地址。
一般在單戚漏片機系統中要分清。常用的X86、GCC-AVR是小端模式;而KEIL
C51為大端模式。還有其他的編譯環境都有默認的模式,具體看變異環境說明。高梁爛
MSB是一串數據的最高位。
LSB是一串數據的最低位。
一般在AD轉換的DATASHEET中會提到。

② ARM里的大端格式和小端格式分別是什麼意思呀

leshen750說的沒錯,給你舉個例子仔孝
int
a
=
0x12345678;
a是四位元組的int類型變數,需要佔四個位元組空間,嘩圓假設變數a的首地址是0x2000,那麼數據存儲在地址念蘆稿中的格式如下:
0x2000
0x2001
0x2002
0x2003
地址
0x12
0x34
0x56
0x78
大端模式存儲
0x78
0x56
0x34
0x12
小端模式存儲

③ 嵌入式系統中 什麼是大小端格式

定義:
大端模式,是指數據的高位拆鎮,保存在跡型內存的低地址中,(而數據的低位,保存在內存的高地址中);

小端模式,是指數據的高位保存在內存的高地址中,(而數據的低位保存在內存的姿御猜低地址中)。

舉例:
int a = 0x12345678; //a裡面存放一個16進制的數,a是int型,並佔4個位元組,現在假設a的首地址是:0x2000。則有:

低地址 ----------------->>> 高地址
0x2000 0x2001 0x2002 0x2003 地址
0x12 0x34 0x56 0x78 大端模式存儲
0x78 0x56 0x34 0x12 小端模式存儲

④ 小端和大端的區別

大端模式和小端模式的區別:

在C語言中除了8位的char型之外,還有16位的short型,32位的long型(要看困告具體的編譯器),對於位數大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,那麼必然存在著如何將多個位元組安排的問題。因此就導致了大端存儲模式和小端存儲模式。

大端模式:

字數據的高位元組存儲在低地址宏兆中,而字數據的低位元組則存放在高地址中。

小端模式:

與大端存儲模式相反,在小端存儲模式中,低地址中存放的是字數據的低位元組,高地址存放的是字數據的高位元組。

我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬體來選擇是大端模式還是小端模式。

採用大端方式進行數據存放符合人類的汪絕明正常思維,而採用小端方式進行數據存放利於計算機處理。

⑤ 編譯器能指定大小端么

大端模式,是指數據的高位元組保存在內存的低地址中,而數據的低位元組保存在內存的高地址中
小端模式,是指數據的高位元組保存在內存的高地址中
而數據的低位元組保存在內存的低地址中
上面c是一個共用體,給共用體中的a賦值為1.然後讀取b是否為1,當b為1是說明是小端模式,b為0則說明是大端模式。

⑥ 為什麼會有大小端模式之分呢

  這是因為在計算機系統中,我們是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組為8bit。但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,那麼必然存在著一個 如何將多個位元組安排 的問題。因此就導致了 大端存儲模式 和 小端存儲模式 。
  例如一個16bit的short型x,在內存中的地址為0x0010,x的值為0x1122,那麼0x11為高位元組,0x22為低位元組。對於大端模式,就將0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,剛好相反。我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬體來選擇是大端模式還是小端模式。

• Little-Endian:低位位元組排放在內存的低地址端,高位位元組排放在內存的高地址端。示例數字0x12 34 56 78在內存中的表示形式:
   內存 低地址 -----------------> 高地址
   0x78 | 0x56 | 0x34 | 0x12 *
  
低位子節 -----------------> 高位子節*

• Big-Endian:高位位元組排放在內存的低地址端,低位位元組排放在內存的高地址端。示例數字0x12 34 56 78在內存中的表示形式:
   內存 低地址 -----------------> 高地址
      0x12 | 0x34 | 0x56 | 0x78
   高位子節 -----------------> 低位子節

可見,大端模式和字元串的存儲模式類似。但是也有各自的特點:
• 小端模式 :強制轉換數據不需要調整位元組內容,1、2、4位元組的存儲方式一樣。
• 大端模式 :符號位的判定固定為第一個位元組,容易判斷正負。

則可以通過以下方式判斷機器的子節序

或者 利用聯合體union成員的存放順序都是從低地址開始的特性來做判斷。

為了方便討論,假設m_RegMW[0] = 0x3456; 在內存中為0x56、0x34。
現要將該數據發出,如果不進行數據轉換直接發送,此時發送的數據為0x56,0x34。而Modbus是大端的,會將該數據解釋為0x5634而非原數據0x3456,此時就會發生災難性的錯誤。所以,在此之前,需要將小端數據轉換成大端的,即進行高位元組和低位元組的交換,此時可以調用步驟五中的函數BigtoLittle16(m_RegMW[0]),之後再進行發送才可以得到正確的數據。

⑦ 大端模式和小端模式

具體如下:


1、大端模式:

大端模式,是指數據的高位,保存在內存的低地址中,而數據的低位,保存在內存的高地址中,這樣的存儲模式類似於把數據當作字元串順序處理。

地址由小向大增加,而數據從高位往低位放;小端模式,是指數據的高位保存在內存的高地址中,而數據的低位保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和我們的邏輯方法一致。

在大端模式下,前16位應該這樣讀: e6 84 6c 4e ( 假設int佔4個位元組)。

記憶方法: 地址的增長順序與值的增長順序相反。

2、小端模式例子:

0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000。

0000440: b484 6c4e 004e ed00 0000 0000 0100 0000。

在小端模式下,前16位應該這樣讀: 4e 6c 84 e6( 假設int佔4個位元組)。

記憶方法: 地址的增長順序與值的增長順序相同。

大小端模式:

為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組為 8bit。但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於 8位的處理器。

例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,那麼必然存在著一個如何將多個位元組安排的問題。因此就導致了大端存儲模式和小端存儲模式。例如一個16bit的short型x,在內存中的地址為0x0010,x的值為0x1122,那麼0x11為高位元組,0x22為低位元組。

對於 大端模式,就將0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,剛好相反。我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬體來選擇是大端模式還是小端模式。

⑧ Big Endian與Little Endian位元組存儲順序

不同的CPU有不同的位元組序類型,這些位元組序是指整數在內存中保存的順序。分為小端格式和大端格式(Little-Endian&Big-Endian):

比如0x1234; 低8位是34,高8位是12;如果它們分配的內存其實地址是0x0001,
那麼如果是大端存儲,那麼0x0001內存低位地址存放高位位元組12;如果是小端存儲,那麼0x0001內存低位地址存放低位位元組34,0x0002存放12。

據Jargon File記載,endian這個詞來源於Jonathan Swift在1726年寫的諷刺小說 "Gulliver's Travels"(《格利佛游記》)。該小說在描述Gulliver暢游小人國時碰到了如下的一個場景。在小人國里的小人因為非常小(身高6英寸)所以總是碰到一些意想不到的問題。有一次因為對水煮蛋該從大的一端(Big-End)剝開還是小的一端(Little-End)剝開的爭論而引發了一場戰爭,並形成了兩支截然對立的隊伍:支持從大的一端剝開的人Swift就稱作Big-Endians,而支持從小的一端剝開的人就稱作Little-Endians......(後綴ian表明的就是支持某種觀點的人)。

1980年,Danny Cohen在其著名的論文"On Holy Wars and a Plea for Peace"中為了平息一場關於在消息中位元組該以什麼樣的順序進行傳送的爭論而引用了該詞。該文中,Cohen非常形象貼切地把支持從一個消帶含息序列的最高位開始傳送的那伙人叫做Big-Endians,支持從最低位開始傳送的相對應地叫做Little-Endians。此後Endian這個詞便隨著這篇論文而被廣為採用。

little endian和big endian是表示計算機位元組順序的兩種格式,所謂的位元組順序指的是長度跨越多個位元組的數據的存放形式.

假設從地址0x00000000開始的一個字中保存有數據0x1234abcd,那麼在兩種不同的內存順序的機器上從位元組的角度去看的話分別表示為:

需要特別說明的是,以上假設機器是每個內派行悄存單元以8位即一個位元組為單位的. 簡單的說,little endian把低位元組存放在內存的低位;而big endian將低位元組存放在內存的高位.

現在主流的CPU,intel系列的是採用的little endian的格式存放數據,而motorola系列的CPU採用的是big endian.

比如: int x, 它的地址為0x100。 那麼它占據了內存中的Ox100, 0x101, 0x102, 0x103這四個位元組(32位系統,所以int佔用4個位元組)。

上面只是內存位元組組織的一種情況: 多位元組對象在內存中的組織有一般有兩種約定。 考慮一個W位的整數。它的各位表達如下:
Xw-1, Xw-2, ... , X1, X0,它的
MSB (Most Significant Byte, 最高有效位元組)為 Xw-1, Xw-2, ... Xw-8;
LSB (Least Significant Byte, 最低有效位元組)為 X7,X6,..., X0。
其餘的位元組位於MSB, LSB之間。

這就引出了大端(Big Endian)與小端(Little Endian)的問題。如果LSB在MSB前面, 既LSB是低地址, 則該機器是小端; 反之則是大端。

對於數據中跨越多個位元組的對象, 我們必須為塵渣它建立這樣的約定:

對於跨越多個位元組的對象,一般它所佔的位元組都是連續的,它的地址等於它所佔位元組最低地址。(鏈表可能是個例外, 但鏈表的地址可看作鏈表頭的地址)。

import java.nio.ByteOrder;

⑨ 詳解大端模式和小端模式

位元組順序 ,又稱 端序 尾序 (英語: Endianness )。在友晌計算機科學計算機科學")領域中,是跨越多位元組的程序對象的存儲規則。
在幾乎所有的機器上,多位元組對象都被存儲為連續的位元組序列。例如在C語言中,一個類型為 int 的變數 x 地址為 0x100 ,那麼其對應地址表達式 &x 的值為 0x100 。且 x 的四個位元組將被存儲在存儲器的 0x100, 0x101, 0x102, 0x103 位置。

在計算機中一般講位元組序分為兩類: Big-Endian (大端位元組序) 和 Little-Endian 。好搜鋒
a) Little-Endian 高位位元組在前,低位位元組在後。
b) Big-Endian 低位位元組在前,高位位元組在後。
c) 網路位元組序:TCP/IP各層協議將位元組序定義為Big-Endian,因此TCP/IP協議中使用的位元組序通常稱之為網路位元組序。
舉個小例子:
整數127(十進制)在計算機(64位)中大/小端位元組序

在x86的計算機中,一般漏拍採用的是小端位元組序

輸出

⑩ 大端模式和小端模式

大端模式(Big-Endian)又稱大端位元組序,由於在網路傳輸中一般使用的是大端模式,所以也叫網路位元組序。

在大端模式中,將高位位元組放在低位地址,低位位元組放在高位地址。

舉個例子,數值 0x12345678 ,其中 0x12 這一端是高位位元組, 0x78 這一端是低位位元組。

該數值的存儲順序是這樣的:

大端模式符合我們閱讀和書寫的方式,都是從左到右的。比如 12345678 ,我們只需要按照從左到右的順序進行閱讀和書寫就是大端模式的存儲順序了。

小端模式(Little-Endian)又稱小端位元組序,由於大多數計算機內部處理使用的是小端模式,所以也叫主機序。

在小端模式中,將高位位元組放在高位地址,低位位元組放在低位地址。

小端模式比較符合我們人類的思維模式,大的放大的那一邊,小的放小的那一邊。但是在計算機中存儲的順序與慎塵我們看到的順序是相反的。

對於早期的計算機來說,先處理低位位元組效率比較高,因為計算都是從低位開始的,所以大多數計算機內部處理使用的是小端模式。但是計算機發展到現在,計算機的處理器相較於以前已經進步很多了,先處理高位還是低位位元組的影響已經可以忽略,但是為了向後兼容,保留了大/小端模式。

大小端模式各有優勢:小端模式強制轉換類型時不需要調整位元組內容,直接截取低位元組即可;大端模式由於符號位為第一個位元組,很方便判斷正負。

大端模式更適合程序員閱讀,因為看到的內容與輸出的內容是一致的。

計算機在處理數據的時候,只會按照順序去讀取字寬早禪節,不關心數睜脊據是大端模式還是小端模式。

程序在讀取到數據後,需要判斷計算機的大小端模式,來決定是否需要進行大小端轉換。

如果讀到的第一個位元組是高位位元組,那麼就是大端模式;反之,如果讀到的第一個位元組是低位位元組,那麼就是小端模式。

閱讀全文

與編譯器大端格式和小端格式相關的資料

熱點內容
日本好看的推理電影 瀏覽:796
墨西哥大尺度電影 瀏覽:167
黃秋生電影有個叫十方大師的 瀏覽:214
vodtypehtml/31/index_2.html 瀏覽:940
瀏覽器如何獲取加密文件 瀏覽:492
無廣告在線電影網站 瀏覽:298
電影里有個叫大衛的男主角 瀏覽:780
韓國中文字幕要愛電影網 瀏覽:977
古代父女禁愛 瀏覽:933
雲伺服器抽算力 瀏覽:534
哪些網站可以供成人看電影,而且不犯法 瀏覽:909
女主叫阮軟的小說男主姓霍 瀏覽:320
百倍暴擊主角叫林宇的小說 瀏覽:674
韓劇洗頭電影 瀏覽:453
如何獲得免費主題安卓手機 瀏覽:699
網站求片子 瀏覽:544
tailjava實現 瀏覽:193
主角從監獄出來拍電影的小說 瀏覽:629
網路錯誤47無法編譯 瀏覽:526
小說主角林奕陳婉兒 瀏覽:556