参考书籍:
《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*/
模型解释:
新闻热点
疑难解答
图片精选