教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

c/c++培訓教你快速理解大端和小端(一)

更新時間:2016年10月21日15時56分 來源:傳智播客C++培訓學院 瀏覽次數:


 學習底層編程或逆向的童鞋,肯定對這兩個名詞并不陌生吧?!今天就給大家介紹一下這兩個概念.
 
科普: 
大端和小端,老外叫 Big-Endian 和 Little-Endian,其實指的都是同一個東東!在計算機界, 表示數據在存儲器中的存放順序. 不同的 CPU、操作系統對待數據的存儲方式各有不同,但一般常見的操作系統都是小端,而通訊協議則是大端。
但并不是說系統是小端形式存儲,文件就一定要采用小端的形式,不同的應用程序對于自身數據的存儲方式也各有千秋(自家數據愛咋放咋放,有些還打亂了加密呢),比如:
* Adobe PS -- 大端
* BMP -- 小端
* GIF -- 小端
* JPEG -- 大端
* MacPaint -- 大端
* RTF -- 小端
那么小端和大端有什么區別呢?舉個栗子大家就明了了:
比如 0x12345678 這個數:
* 大端法在內存中按字節依次存放為:12 34 56 78
* 小端法在內存中按字節依次存放為:78 56 34 12

解釋:
大端:較高的有效字節存放在較低的存儲器地址,較低的有效字節存放在較高的存儲器地址。
比如整型變量 0x12345678 占 4 個字節,那么根據內存地址從小到大它們的存放方式如下:
數據 0x12 0x34 0x56 0x78
地址 0x10000000 0x10000001 0x10000002 0x10000003
小端:較高的有效字節存放在較高的的存儲器地址,較低的有效字節存放在較低的存儲器地址。所以整型變量 0x12345678 根據內存地址從小到大它們的存放方式如下:
數據 0x78 0x56 0x34 0x12
地址 0x10000000 0x10000001 0x10000002 0x10000003

本文版權歸傳智播客C++培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客C/C++培訓學院
首發:http://www.itcast.cn/c/ 
0 分享到:
红豆直播app黄台_红豆直播app下载免费_红豆直播app下载