二進位制讀寫之大端VS小端

2021-10-07 06:07:18 字數 2003 閱讀 8263

所謂大端(big endian)、小端(little endian)是指計算機在讀寫資料時遵循的位元組排列順序,即位元組序(byte order)。

想要理解位元組序,必須得先了解位元組

計算機cpu執行任何程式,處理任何事物,都是在執行一段由0、1組成的二進位制機器指令;也就說計算機只認識0和1;每個0和1都被分別放到乙個bit位上,bit:計算機世界裡表示資訊的最小單位。

例如,整數15,二進位制為1111, 要用4個二進位制bit位表示;整數200,二進位制為11001000,要用8個二進位制bit位表示。

計算機中所有人文符號,比如數字,符號,等都是由數字去表示的;要表示的資料越大,所用到的數字也就越多;如果利用bit位去表示乙個資料占用,會發現即長又不方便記憶。

因為早期計算機需要表示的字元不是很多,只有0-9阿拉伯數字,英文本母,標點符號等;字元的unicode編碼,用8個二進位制bit位就能全部標識;8個二進位制bit位長度被稱之為位元組(byte);即1byte=8bit

byte是計算機儲存資料的最小單位。

大端**(big endian)** :是指低位址存放,最高有效位元組(msb)。

小端**(little endian)** :是低位址存放,最低有效位元組(lsb)。

例如:整數:573785173

二進位制:100010001100110100010001010101

16進製制:0x22334455

占用:4個位元組(byte)

占用計算:因為1個16進製制位,能標識的最大數是f(十進位制15),二進位制為1111,占用4個bit,2個16進製制位就是8bit,剛好是乙個位元組(byte)

0x:十六進製制表示符,看到0x就表示這是乙個16進製制數。

整數573785173,大/小端位元組序,體現在儲存上就是下面這種情況:

0x0155a800->00000000

0x0155a801->00000000

0x0155a802->00000000

0x0155a803->00000000

big endian法:

0x22=>00100010

0x33=>00110011

0x44=>01000100

0x55=>01010101

little endian:

0x55=>01010101

0x44=>01000100

0x33=>00110011

0x22=>00100010

0x0155a800->00000000 :表示在0x0155a800這個位址上有8bit,1位元組(byte)的儲存空間。

0x22=>00100010 : 用十六進製制數表示乙個具體的二進位制儲存結果,儲存位址上具體存的是乙個二進位制數。

兩個系統中使用了不同位元組序,讀取資料,a用大端向b傳送資料,b收到資料用小端去讀取,不做轉換的話資料無法正常解析。

大端小端與數字的二進位制儲存

部分1 大端小端概念 摘自 計算機系統中記憶體是以位元組為單位進行編址的,每個位址單元都唯一的對應著1個位元組 8 bit 這可以應對char型別資料的儲存要求,因為char型別長度剛好是1個位元組,但是有些型別的長度是超過1個位元組的 字串雖然是多位元組的,但它本質是由乙個個char型別組成的類似...

二進位制檔案讀寫

define crt secure no warnings include include include size t fread void buffer,size t size,size t count,file stream size t fwrite const void buffer,si...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...