C语言:stm32中一个整形数据是怎么存储的

目录

举个例子

如何验证

小结


在 STM32(基于 ARM Cortex-M 架构)的系统中,默认是小端(Little Endian) 存储方式。也就是说,对于一个整型(例如 32 位 int),它的**最低有效字节(LSB)会存储在内存的低地址处,而最高有效字节(MSB)**会存储在内存的高地址处。


举个例子

假设有一个 32 位的 int data = 0x12345678;

  • 在小端模式下,内存中的存放顺序从低地址到高地址依次是:

    低地址 -> 0x78
             0x56
             0x34
    高地址 -> 0x12
    
  • 如果是大端模式,则会相反(不过 STM32 默认不使用大端模式):

    低地址 -> 0x12
             0x34
             0x56
    高地址 -> 0x78
    

如何验证

如果你想亲自验证,可以在代码中进行类似下面的操作:

#include <stdio.h>
#include <stdint.h>

int main(void)
{
    uint32_t data = 0x12345678;
    uint8_t *p = (uint8_t *)&data;

    printf("Address of data = %p\n", (void *)&data);
    printf("Byte 0 = 0x%02X\n", p[0]);
    printf("Byte 1 = 0x%02X\n", p[1]);
    printf("Byte 2 = 0x%02X\n", p[2]);
    printf("Byte 3 = 0x%02X\n", p[3]);

    while (1);
    return 0;
}
  • 在 STM32(小端模式)下,得到的输出通常为:

    Byte 0 = 0x78
    Byte 1 = 0x56
    Byte 2 = 0x34
    Byte 3 = 0x12
    

由此可以看出,最低有效字节 0x78 存储在最低地址处。


小结

  • STM32 默认使用小端序
  • 在内存中,“低地址处存放低有效字节、高地址处存放高有效字节”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

魂兮-龙游

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

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

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

打赏作者

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

抵扣说明:

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

余额充值