1. 程式人生 > >關於大端位元組序和小端位元組序

關於大端位元組序和小端位元組序

現在,大多數的計算機都是按位元組編址的(除了按位元組編址還有按字編址和按位編址)。所以這裡只討論按位元組編址的計算機。

大端位元組序:資料的高位元組儲存在低地址。

小端位元組序:資料的高位元組儲存在高地址。

計算機中的記憶體可以看成是線性的(這裡只討論按位元組編址), 如下圖:

從上圖可以看出,一個int型是16位也就是兩個位元組的長度,一共可以表示2^16byte(也就是64KB)的記憶體。

現在我們來看看一個int型分別在大端和小端是怎麼儲存的。

舉個例子:

我們現在有一個整數是258。用16進製表示是0x0102, 然後我們把這個整數拆分成兩個位元組,第一個位元組為0x01, 第二個位元組為0x02.

對應的二進位制分別是:0000 0001    和   0000 0010。

如果在一個使用大端位元組序的電腦上,這個整數會被這樣存放:


這跟我們平時上課教的使用的位元組序是一樣的。都是高位在低地址。

如果一個使用小端位元組序的電腦上,這個整數的高位元組就會存放在高地址上:


仔細看低地址的內容程式設計了int型的低位元組部分,也就是0000 0010。

以上就是大端和小端計算機在儲存資料方面的區別。

相關推薦

大端位元組位元組問題(big-endian & little-endian)

        所謂的大端模式(Big-endian),是指資料的低位(就是權值較小的後面那幾位)儲存在記憶體的高地址中,而資料的高位,儲存在記憶體的低地址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:地址由小向大增加,而資料從高位往低位放;         所謂的小端模式(Little-endian

大端位元組位元組

對錶示一個物件的位元組序列排序,有兩個通用的規則。有些機器選擇在儲存器中按照從最低有效位元組到最高有效位元組的順序儲存物件,而另一些機器按照從最高有效位元組到最低有效位元組的順序儲存。前一種規則——

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

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

關於大端位元組位元組

現在,大多數的計算機都是按位元組編址的(除了按位元組編址還有按字編址和按位編址)。所以這裡只討論按位元組編址的計算機。 大端位元組序:資料的高位元組儲存在低地址。 小端位元組序:資料的高位元組儲存在高地址。 計算機中的記憶體可以看成是線性的(這裡只討論按位元組編址),

大端位元組位元組通俗易懂講解

大端(儲存模式),是指資料的地位儲存在記憶體的高地址中,而資料的高位儲存在記憶體的低地址中。 小端(儲存模式),是指資料的地位儲存在記憶體的低地址中,而資料的高位儲存在記憶體的高地址中。 小端如下圖

位元組----大端

大端序 (big endian ):最高有效位元組儲存在最低低至,隨地址升高,位元組的權重降低。 小端序(little endian): 最低有效位元組儲存在最低地址,隨地址升高,位元組的權重升高。 比如說一個int型數字a為0x1234,那麼0x12代表a的高位,0x34代表a

大端位元組還是位元組-新浪2019筆試題

愚蠢的博主選錯了新浪崗位,考的是Androd和IOS方向的題,好在程式設計題還算正常,好陣子沒空寫,現在簡單記錄一下 先了解一下什麼是大端位元組和小端位元組 大端儲存就是將高位元組序的內容儲存到低地

判斷CPU是大端位元組還是位元組

#include <stdio.h> union hhh { int num; char a; }; int main() { union hhh h; h.num = 0x12345678; if(h.a == 0x78

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

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

[C/C++]_[初級]_[大端理解]

場景 在進行Socket通訊時, 因為網路位元組序是 Big-Endian模式(標準), 而大部分Windows系統都是 Little Endian模式, 所以在傳輸數值型別的資料時, 需要把 Little Endian的記憶體資料轉換為 Big-Endian再發送.

大端位元組區別

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

大端

spa 形式 tro bit 順序 什麽 基本類型 字節數 大端模式 Java基本類型占用的字節數:1字節: byte , boolean2字節: short , char4字節: int , float8字節: long , double註:1字節(byte)=8位(bi

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

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

需要注意位元組大端(big endian)(little endian)的幾種情景

大端(big endian):在記憶體中,按照從最低有效位元組到最高有效位元組的順序儲存物件,即資料的高位元組,儲存在記憶體的低地址中,而資料的低位元組,儲存在記憶體的高地址中。 小端(littl

位元組——大端(Big Endian)(Little Endian)

每次碰到這個問題都需要現查資料,腦子不夠用啊,索性就把它的來龍去脈寫下來,加深一下印象。 1. 位元組序問題的存在原因 自計算機採用byte作為儲存單位起,位元組序就是一個有爭議的話題。這是因為我們通常處理的資料都是多位元組資料,比如c語言中一個型別為int的變數,在記憶體

大端儲存儲存,網路位元組

一、大端、小端 "大端"和"小端"表示多位元組值的哪一端儲存在該值的起始地址處;小端儲存在起始地址處,即是小端位元組序;大端儲存在起始地址處,即是大端位元組序; 或者說: 1.小端法(Little-Endian)就是低位位元組排放在記憶體的低地址端(即該值的起始地址),高

判斷位元組大端位元組的C程式

編寫一個C程式,實現32位CPU中儲存方式小端位元組序和大端位元組序的判別。 ONE: #include<stdio.h> #define LBS 0 #define MBS 1 { int main(int) { int a=0x12345678; c

位元組大端位元組

轉自達內培訓資料 以32位整數:0x12345678為例,該資料位數從左至右依次降低 小端位元組序:資料的地位在低地址,高位在高地址。0x12345678的小端位元組序為:[0x78, 0x56, 0x34, 0x12],地址從左至右依次升高 大端位元組序:資料的高位在低地

寫一個C程式判斷系統是32或64位、大端位元組

一、判斷系統是32位或64位32位處理器一次只能處理32位,也就是4個位元組的資料,虛擬地址空間的最大值是4G。64位處理器一次能處理64位,也就是8個位元組的資料,虛擬地址空間的最大值是16T。32位

位元組整數字節/大端

《UNIX Network Programming Volume1: The Socket Networking API, Third Edition》 W.Richard Stevens