【程序设计】内存堆栈的分配格局解析大小端模式

本文通过对比大小端模式下的内存分配格局,帮助读者理解这两种不同的数据存储方式。通过代码示例和内存图解,阐述了如何区分大端和小端模式,并分析了数据寻址及内存扩展方向。最终,文章总结了大端和小端模式的定义,以助于加深理解。
摘要由CSDN通过智能技术生成


今天找了一整天的资料,企图弄懂大小端模式的区别,但是弄了很久还是弄不懂。后面尝试从内存中的分配格局来区别,找了大、小端模式下的内存分配格局进行比较,就弄懂了。

先贴出基本知识:

所谓的大端模式Big-endian,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
   所谓的小端模式Little-endian,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

下面这段代码可以用来测试一下你的编译器是大端模式还是小端模式:
short int x;
char x0,x1;
x=0x1122;
x0=((char*)&x)[0]; //低地址单元
x1=((char*)&x)[1]; //高地址单元
cout << hex << (int)x0 << endl;
若x0=0x11,则是大端; 

若x0=0x22,则是小端;
上面的程序还可以看出,数据寻址时,用的是低位字节的地址。



下面我们贴出2张图来从内存分配格局区别大小端模式

第一张图是小端模式下的内存分配格局:

 



第二张图是端模式下的内存分配格局:


仔细看其实大小端模式下内存的分配格局就在于:

栈在高位内存还是低位内存往下延伸(本人文采不好,但愿你们能根据图理解)

如果高地址在上,那么就是小端模式(我的计算机就是小端模式,所以我下个推论-一般PC机都是小端模式,因为小端模式下PC容易对数据进行处理࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值