我们都知道一个数或者字符只要输入了计算机,计算机就为这个数或字符开辟了存储空间。
我们随便定义一个整型变量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对比一下,发现顺序是相反的。出现这种情况的原因是,数据在存储的时候,可能按照大端字节存储,或者按照小端字节存储。这个要分编译器不同而不同。
大端存储:数据的高位(二进制位或十六进制位)保存在低地址中,数据的低位保存在高地址中;
小端存储:数据的低位保存在低地址中,数据的高位保存在高地址中;
显然这里数据是以小端字节存储的。
那怎样判断自己的电脑是以什么方式存储数据的呐,请看下面的小程序:
结果:
或者这样写: