计算机的大端模式和小端模式区别
计算机在存储数据到内存的时候遵守大端模式和小端模式,也就是我们所说的大尾和小尾模式 大端(大尾):数据的高字节保存在内存的低地址 小端(小尾):数据的高字节保存在内存的高地址 下面是摘自百度百科,这个例子比较好理解 大端模式 所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 例子: 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440: b484 6c4e 004e ed00 0000 0000 0100 0000 在大端模式下,前32位应该这样读: e6 84 6c 4e ( 假设int占4个字节) 记忆方法: 地址的增长顺序与值的增长顺序相同 小端模式 所谓的小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。 例子: 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440: b484 6c4e 004e ed00 0000 0000 0100 0000 在小端模式下,前32位应该这样读: 4e 6c 84 e6( 假设int占4个字节) 记忆方法: 地址的增长顺序与值的增长顺序相反 我这练习测试的就是在普通PC上,使用的x86架构,使用的是小端模式, 参考: https://blog.csdn.net/chy555chy/article/details/51966160 https://blog.csdn.net/chennut0802/article/details/6544428
例子:
在C代码中测试小端模式
下面是定义了一个变量,然后给其赋值了0x12345678
然后我们在VC 6.0编译器下面进入调试模式,将定义的变量拖入到内存中,查看内存的数据即可恍然大悟
我们分析下,上图中在我们看到的,内地地址0012FF78---->0012FFAC由上至下是从小到大,从低到高
当我们从左至右观察,也发现内存编号0012FF78 开始从左向右往后走也是从小到大,分别依次是:0012FF78 ,0012FF79, 0012FF7A, 0012FF7B 这4个地址就是对应的CC CC CC CC
那么根据上面的分析,知道内存中的高低分布了,在我们写C代码的时候定义0x12345678的时候,其顺序是高位-->低位,也就是从0x12开始是12是高位,后面是地位
所以在内存中的分布按照小端模式来存储的话:高位放在高位,低位放在地位 ,从左到右:78 56 34 12
迷茫的人生,需要不断努力,才能看清远方模糊的志向!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-08-31 Vulnhub-靶机-GOLDENEYE: 1