我希望找到一种列举符合特定位掩码的值的方法。
例如,我想枚举所有包含模式
一个简单的C程序可以实现这个功能:
例如,我想枚举所有包含模式
0xb5
的字节。一个简单的C程序可以实现这个功能:
#include <stdio.h>
#include <stdint.h>
/* prints out b5, b7, bd, bf, f5, f7, fd, ff */
int main(int argc, const char ** argv) {
const uint8_t mask = 0xb5;
uint8_t i = 0;
while(true) {
if((i & mask) == mask) printf("%x\n", i);
if(i == UINT8_MAX) break;
i++; /* Replace by something smarter. */
}
return 0;
}
无论使用什么掩码,这个循环都会迭代UINT8_MAX
次。有没有一个巧妙的位操作技巧可以自动将i
增加到满足掩码的下一个值?
i = mask
而不是i = 0
。 - Steen