[ARM入门] 嵌入式代码优化技巧--使用位操作

[复制链接]
1397|0
 楼主| 呐咯密密 发表于 2024-3-25 10:17 | 显示全部楼层 |阅读模式
1、使用位域

有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。

比如:管理一些标志位。

使用位域:

  1. struct {
  2.     unsigned char flag1:1;
  3.     unsigned char flag2:1;
  4.     unsigned char flag3:1;
  5.     unsigned char flag4:1;
  6.     unsigned char flag5:1;
  7.     unsigned char flag6:1;
  8.     unsigned char flag7:1;
  9.     unsigned char flag8:1;
  10. } flags;

优于:

  1. struct {
  2.     unsigned char flag1;
  3.     unsigned char flag2;
  4.     unsigned char flag3;
  5.     unsigned char flag4;
  6.     unsigned char flag5;
  7.     unsigned char flag6;
  8.     unsigned char flag7;
  9.     unsigned char flag8;
  10. } flags;
2、使用位操作代替除法和乘法

使用位操作:

  1. uint32_t val = 1024;
  2. uint32_t doubled = val << 1;
  3. uint32_t halved = val >> 1;

优于:

  1. uint32_t val = 1024;
  2. uint32_t doubled = val * 2
  3. uint32_t halved = val / 2



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

567

主题

4082

帖子

56

粉丝
快速回复 在线客服 返回列表 返回顶部