这是我在一篇文章中看到的图片。
我百度查了下,内存中的栈,高位地址在上,每次压栈(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無論大端存儲還是小端存儲,計算的結果是一致的。
回答如有錯誤紕漏,請指正