当前位置: 首页 > article >正文

在stm32中C语言编写的程序中,一个整形数据是怎么存储的,高位在前还是低位在前

目录

举个例子

如何验证

小结


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


举个例子

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

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

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

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

如何验证

可以在代码中进行类似下面的操作,同时下面的代码也可以验证8位的指针指向32位指针的时候,8位指针指向的是32位数据的最低位

#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 默认使用小端序
  • 在内存中,“低地址处存放低有效字节、高地址处存放高有效字节”。

http://www.kler.cn/a/514179.html

相关文章:

  • 【2024 博客之星评选】请继续保持Passion
  • 55.【5】BUUCTF WEB NCTF2019 sqli
  • 特殊类设计
  • 【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例
  • React 中hooks之 React.memo 和 useMemo用法总结
  • 二叉树--堆排序
  • Qt按钮美化教程
  • 高频交易中 FPGA 的作用及面试指南
  • 小红书用户作品列表 API 系列,返回值说明
  • Go CSP并发模型
  • python md5加密
  • 《AI赋能光追:开启图形渲染新时代》
  • 3.1 Go函数调用过程
  • 论文+AI赋能教育:探索变革路径与创新实践。包括word和pdf格式。
  • 校园二手交易平台小程序设计与实现(LW+源码+讲解)
  • Vue.js 组件开发:打造高效、可维护的前端架构
  • web前端3--css
  • Java设计模式 五 建造者模式 (Builder Pattern)
  • Redis实训:社交关注关系存储任务
  • OneData体系架构详解
  • react中hooks之 React 19 新 Hooks useActionState useFormStatus用法总结
  • js重要知识点
  • MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)
  • SQL中字符串截取函数(substring)
  • 解决 PostgreSQL 中创建 TimescaleDB 扩展的字符串错误
  • 分布式系统架构8:分布式缓存