巧用位操作

案例1

计算25% 50% 75% 99%分位值
通过先判断(bitmap & 0x1),然后满足条件后,设置 bitmap &= ~0x1;,使得每个if语句只会执行一次

void delay_calcu() {

    uint64_t cnt = 0;
    uint64_t bitmap = 0xFF;

    if (Count == 0) return;

    for (int it = 0; it < MAX_DELAYMS; it++) {
      cnt += Delayms[it];

      int persent = (cnt * 100 / Count);
      if ((bitmap & 0x1) && persent >= 25) {
        Persent25 = it;
        bitmap &= ~0x1;
      }
      if ((bitmap & 0x2) && persent >= 50) {
        Persent50 = it;
        bitmap &= ~0x2;
      }
      if ((bitmap & 0x4) && persent >= 75) {
        Persent75 = it;
        bitmap &= ~0x4;
      }
      if ((bitmap & 0x8) && persent >= 99) {
        Persent99 = it;
        bitmap &= ~0x8;
      }

      Delayms[it] = 0;
    }
  }
};
posted @ 2025-07-31 08:50  LdreamerD  阅读(2)  评论(0)    收藏  举报