首先,2的幂特征:
1,2,4,8,16…
二进制即0001,0010,0100,1000…
所以,
bool is2power(int num){
return (num>0) && (num&(num-1)) == 0 && (num & 0x11111111);
}
同理,4的幂特征:
1,4,16,64…
二进制即0001,0100,10000,…
所以:
bool is4power(int num){
return (num>0) && (num&(num-1)) == 0 && (num & 0x55555555);
}
本文介绍了一种高效判断一个整数是否为2的幂或4的幂的方法,通过位运算技巧实现,适用于计算机科学与编程领域,特别是算法优化和数据结构课程。
1891

被折叠的 条评论
为什么被折叠?



