1 高低地址
基础
可以把主存看成一本空白的作业本,你现在要在笔记本上记录一些内容,他的页码排序是
1 2 3 4
| 第一页 : 0x0000001 第二页 : 0x0000002 ... 最后一页: 0x0000092
|
- 如果你选择
从前向后记录(用完第一页,用第二页,类推)这就是先使用低地址,后使用高地址.业内表述:动态分配内存时堆空间向高地址增长,说的就是这种情况.这个向高地址增长就是先使用低地址,后使用高地址的意思.
1
| 0x0000001 -> 0x0000002-> ... -> 0x0000092
|
- 如果你选择
从后往前记录(先用笔记本的最后一页,用完后使用倒数第二页,类推) 这就是先使用高地址,后使用低地址.业内表述:0xbfac 5000-0xbfad a000是栈空间,其中高地址的部分保存着进程的环境变量和命令行参数,低地址的部分保存函数栈帧,栈空间是向低地址增长的.这个向低地址增长就是先使用高地址,后使用低地址的意思.
1
| 0x0000092 -> ... ->0x0000002 -> 0x0000001
|
2 高低位
基础
- 这个
高地址与低地址容易与高位``低位产生混淆.比如我这个月工资为1234(一千二百叁拾肆块),那么这串数字的左边我们称呼为高位,右边称为低位.(这个高低来自于人类的阅读习惯,数字从左向右,表示由大到小)
实例
- 在计算机中以
int类型存储工资,假设int占用四个字节,每个字节地址如下
1 2 3 4
| 0x00008 0x00009 0x0000a 0x0000b
|
1 2 3 4 5
| // 大端法 0x00008 => 1 0x00009 => 2 0x0000a => 3 0x0000b => 4
|
1 2 3 4 5
| // 小端法 0x00008 => 4 0x00009 => 3 0x0000a => 2 0x0000b => 1
|
内存中的低地址存储工资中的高位这种方式称为大端法.如果把上边的存储方式反过来,内存中的高地址存储工资中的高位,则称为小端法 little endian.
主机采用大端还是小端表示数据由CPU的架构决定,如果两个主机只见交互数据,但是字节序表示不同,需要同化.