1.整形数据在内存中的存储方式 整形表示在C语言中可以有十进制、二进制、十六进制,所以数据是用什么形式存进去的呢,这里我简单的说一下,要深入原理那就复杂了。 因为计算机它的由0和1的电路来控制的,而且二进制刚好也只有0和1表示,所以整形数据在内存中是二进制存的,如果数据转换成二进制直接存进去的话,CPU进行加法计算的时候还好,如果是进行减法计算就不行了。 我直接说结果,所以这里最终存在数据内存中的数据是以二进制补码的形式存储的。 补码->原码:取反+1,原码->补码:取反+1。 2.如何存进去的?或者说按什么顺序存的呢?-大小端! 在VS编译器中,数据是以小端存储进去的,什么又是小端呢? 下面我用十六进制数来表示,4个byte==1个16进制数比如: 二进制:0b11111111 = 十六进制:0x11。 好,我这里直接说结论,小端字节序存储的规则是:低位的二进制数存在低地址处。怎么理解这句话呢?看如下图: 那么大端的规则就是:低位的二进制数存在高地址处。 知道大小端有什么用呢? 如果不用指针的话那么你不知道大小端也没关系,但是你有指针的话,你可以直接拿到地址访问里面的数据,如果你的数据是4个字节的整形,但你用1个字节的char指针去访问,那么拿到的就是低地址处1个字节的数据,如果是小端存储的话,你拿到的就是上面图中的0x01,但是这是大端存储的话你用指针去拿的话,地址处存的就是0x00而不是0x01,高地址处才是0x01,所以大小端的存储规则还是很有必要知道的。 3.总结 我这里只说整形的存储方式,还有其他类型的存储方式没讲,但是简述说了下是怎么存的,通过大小端的方式存储,数据以二进制补码形式。