大小端的存储

本文探讨了计算机中数据存储的大小端模式,通过实例代码展示了-10在不同存储方式下的表现。小端存储方式将低位存储在低地址,高位在高地址,而大端则相反。在内存中,-10的16进制表示FFFFFFF6在小端模式下符合预期,而在某些情况下可能表现为高位在低地址。文章还介绍了如何根据存储和解释过程理解大小端对数据存储的影响,并提供了记忆口诀帮助理解。
摘要由CSDN通过智能技术生成

对于下面这个代码

int main()
{
	unsigned int a = -10;
	printf("%d\n", a);
	printf("%u", a);

}

 -10的二级制是 1111 1111 1111 1111 1111 1111 1111 0110

换算成16进制应该是 FF FF FF F6

内存中从左到右是低地址到高地址

按常识FF FF FF F6在内存中应该存的也是FF FF FF F6

但实际我们发现vs存储的方式是低位存在低地址,高位存在高地址,和想象的存储似乎有点出入,为什么会这样呢?

这就是大小端问题

 一共有两种数据存储方式:

  • 大端
  • 小端

大小端概念

按照字节为单位,低权值位数据存储在高地址处,就叫做大端

按照自己饿为单位,低权值位数据存储在低地址处,就叫做小端

比如说这里有个代码:

int a=0x11223344

它的存储方式如下:

0x11223344

 

记忆口诀:小小小(低权值位,低地址处,小端),否则就是大端(小大大)

所以到这里,我们回去看变量a的存储,可以判断他是大端存储

大小端如何影响数据存储的

大小端的存储方式,本质是数据和空间按照字节为单位的一种映射关系

比如说我们小端存储:

存的过程

 

对于数据11223344

我们使用小端存储,从低地址到高地址将44 33 22 11存入(16进制为例)

取得过程

  • 先看大小端决定怎么取
  • 取出来放到对应权值位后,在看空间所属类型(有符号还是无符号,正数还是负数)决定解释方式

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿你生活有惊喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值