參考書籍:
《c++程序設計》、《c++PRimeplus》、《c和指針》、《數據結構與算法——c++》
1. 計算機地址
1.計算機地址是以字節(byte)為單位的,通常用16進制顯示,例如0x0012與0x0013差1個字節
注意若非地址而是普通的數字中位操作是以位(bit)為單位進行,一個字節包含8個比特位,
CPU存儲數據的兩種格式:
大端(也叫大印第安序)(Big endian):低地址存放儲存數據的高位字節
小端(也叫小印第安序)(Little endian):低地址存放儲存數據的低位字節
比如在CPU內存地址上存儲4字節的整形變量0x12345678,假設從0x1000開始存儲
存儲數據格式 | 0x1000 | 0x1001 | 0x1002 | 0x1003 |
大端 | 0x78 | 0x56 | 0x34 | 0x12 |
小端 | 0x12 | 0x34 | 0x56 | 0x78 |
一般來說,x86系列的CPU是Little endian
代碼驗證:
unsigned int num=0;//初始化num為0,防止num為混亂值cout << "存儲num的地址:" << &num << endl;unsigned char *p = (unsigned char*)#//取出num地址中的低字節地址*p = 0xff;if (num == 0xff){cout << "小端";}else //0xff被解析位高位字節{cout << "大端";}*(p++) = 0xff;//將num的第二個字節地址賦值cout <<endl<< num;輸出:在Windows平臺下驗證
存儲num的地址:009AF738
小端
255*/
模型解釋:
新聞熱點
疑難解答
圖片精選