巧用位操作
案例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;
}
}
};