C语言-整形数据在内存中是怎样存储的?&&大小端

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.总结

        我这里只说整形的存储方式,还有其他类型的存储方式没讲,但是简述说了下是怎么存的,通过大小端的方式存储,数据以二进制补码形式。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aang丶江辞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值