这是我在一篇文章中看到的图片。
我百度查了下,内存中的栈,高位地址在上,每次压栈(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无论大端存储还是小端存储,计算的结果是一致的。
回答如有错误纰漏,请指正