所謂大端(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)的儲存空間。兩個系統中使用了不同位元組序,讀取資料,a用大端向b傳送資料,b收到資料用小端去讀取,不做轉換的話資料無法正常解析。0x22=>00100010 : 用十六進製制數表示乙個具體的二進位制儲存結果,儲存位址上具體存的是乙個二進位制數。
大端小端與數字的二進位制儲存
部分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年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...