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

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

简单分析数据在内存中存储方式及顺序_第1张图片

我们随便定义一个整型变量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对比一下,发现顺序是相反的。出现这种情况的原因是,数据在存储的时候,可能按照大端字节存储,或者按照小端字节存储。这个要分编译器不同而不同。

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

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

简单分析数据在内存中存储方式及顺序_第2张图片

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

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

简单分析数据在内存中存储方式及顺序_第3张图片

 结果:

简单分析数据在内存中存储方式及顺序_第4张图片

 或者这样写:

简单分析数据在内存中存储方式及顺序_第5张图片

你可能感兴趣的:(C,c语言,开发语言,后端)