84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
这是我在一篇文章中看到的图片。
我百度查了下,内存中的栈,高位地址在上,每次压栈(int这类),都会将地址减去1个字节,然后将值放入栈。
高位地址在上
但是这张图,在对操作数栈做压栈操作的时候,却从底下往上放了。不知道是我理解错了,还是作者的一个失误。
操作数栈
却从底下往上放了
谢谢指点
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
我看了该文章的其他图片,涉及到操作数栈的图片,都是从下往上的
首先,在栈里面连续存入int a和int b,那么b的内存地址一定比a的地址大4个字节,而不是1个字节!
至于大端模式还是小端模式,先从二进制说起,数据在栈内最小存储单位为字节,字节内的存储是固定的小端模式!
同样一个十六进制数据0x3F00 在小端模式下存储顺序为00 3F,而在大端模式下存储顺序为3F 00。说白了就是先存储低位的字节还是先存储高位的字节。
而java的存储模式与计算机的cpu有关,但无论大端还是小端,存储模式相反解析也是相反的,也就是说同样一个int无论大端存储还是小端存储,计算的结果是一致的。
回答如有错误纰漏,请指正
我看了该文章的其他图片,涉及到
操作数栈
的图片,都是从下往上的首先,在栈里面连续存入int a和int b,那么b的内存地址一定比a的地址大4个字节,而不是1个字节!
至于大端模式还是小端模式,先从二进制说起,数据在栈内最小存储单位为字节,字节内的存储是固定的小端模式!
同样一个十六进制数据0x3F00 在小端模式下存储顺序为00 3F,而在大端模式下存储顺序为3F 00。说白了就是先存储低位的字节还是先存储高位的字节。
而java的存储模式与计算机的cpu有关,但无论大端还是小端,存储模式相反解析也是相反的,也就是说同样一个int无论大端存储还是小端存储,计算的结果是一致的。
回答如有错误纰漏,请指正