简单分析数据在内存中存储方式及顺序

我们都知道一个数或者字符只要输入了计算机,计算机就为这个数或字符开辟了存储空间。

我们随便定义一个整型变量a=-10,可以看到对a取地址得到一个f6 ff ff ff的数据。 这里显然计算机是以十六进制存储的,那为什么展现出来的是这样的。

这里要说明一下计算机存储数据都是以补码的形式存储的,对于正数,源码、反码、补码都相同。对于负数,这里以-10举例。

源码:10000000 00000000 00000000 00001010

反码:11111111 11111111 11111111 11110101

补码:11111111 11111111 11111111 11110110

将-10的补码转换成十六进制就变成了ff ff ff f6,在和我们的f6 ff ff ff对比一下,发现顺序是相反的。出现这种情况的原因是,数据在存储的时候,可能按照大端字节存储,或者按照小端字节存储。这个要分编译器不同而不同。

大端存储:数据的高位(二进制位或十六进制位)保存在低地址中,数据的低位保存在高地址中;

小端存储:数据的低位保存在低地址中,数据的高位保存在高地址中;

 显然这里数据是以小端字节存储的。

那怎样判断自己的电脑是以什么方式存储数据的呐,请看下面的小程序:

 结果:

 或者这样写:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咸鱼吐泡泡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值