什么是高地址,什么是低地址,举举例说明?

什么是高地址,什么是低地址,举举例说明?最好举生活中的例子解释,书面语我已经理解不了了,谢谢

堆栈是在内存中指定的一段特殊存储区,春起始单元的地址叫栈底,当前存储单元地址叫栈顶,堆栈存储区一旦指定,栈底就固定不变了,而栈顶是随入栈、出栈操作呈动态。而不同机型的堆栈设计,有两种情况:一是每入栈一个数,栈顶地址加1,每出栈一个数,栈顶地址减1,即堆栈区是由内存的低地址向高地址。另一种是每入栈一个数,栈顶地址减1,每出栈一个数,栈顶地址加1,即堆栈区是由内存的高地址向低地址。
高地址、低地址的概念是计算机领域里通用的,并非汇编知识特有。高地址、低地址是相对而言,即相对地址编码的大小而言。追问

谢谢

找到了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-29
可以把主存看成一本空白的作业本,你现在要在笔记本上记录一些内容,他的页码排序是

第一页 : 0x0000001
第二页 : 0x0000002
...
最后一页: 0x0000092

1 如果你选择`从前向后记录`(用完第一页,用第二页,类推)这就是先使用低地址,后使用高地址.

0x0000001 -> 0x0000002-> ... -> 0x0000092

业内有这样表述:动态分配内存时堆空间向高地址增长,说的就是这种情况.
这个向高地址增长就是先使用低地址,后使用高地址的意思.

2 如果你选择`从后往前记录`(先用笔记本的最后一页,用完后使用倒数第二页,类推) 这就是先使用高地址,后使用低地址

0x0000092 -> ... ->0x0000002 -> 0x0000001

业内表述:`0xbfac 5000-0xbfad a000`是栈空间,其中高地址的部分保存着进程的环境变量和命令行参数,低地址的部分保存函数栈帧,**栈空间是向低地址增长的**.
这个向低地址增长就是先使用高地址,后使用低地址的意思.

这个`高地址`与`低地址`容易与`高位``低位`产生混淆.

比如我这个月工资为`1234`(一千二百叁拾肆块),那么这串数字的左边我们称呼为高位,右边称为低位.
(这个高低来自于人类的阅读习惯,数字从左向右,表示由大到小)

在计算机中以`int`类型存储工资,假设`int`占用四个字节,每个字节地址如下

0x00008
0x00009
0x0000a
0x0000b

把工资加载到内存中时,就会有两种存储方式,如下:

// 大端法
0x00008 => 1
0x00009 => 2
0x0000a => 3
0x0000b => 4

或者

// 小端法
0x00008 => 4
0x00009 => 3
0x0000a => 2
0x0000b => 1

内存中的低地址存储工资中的高位这种方式称为`大端法`.如果把上边的存储方式反过来,内存中的高地址存储工资中的高位,则称为`小端法 little endian`.
(注释:可以采用异或方法来记忆 低地址存低位为小端法-> `弟弟小` ^O-O^).
主机采用大端还是小端表示数据由CPU的架构决定,如果两个主机只见交互数据,但是字节序表示不同,需要同化.
相似回答