我试图找到一个数字的二进制基数,比如将数字四舍五入到它下面的最大整数的 floor 函数,我想将数字四舍五入到它下面的第一个二进制基数。
例如:
for 1000 it should be 512
for 10 it should be 8
for 208 it should be 128
这是我尝试过的。我觉得日志功能会消耗更多资源,那么有没有更快的方法呢?
#include<stdio.h>
int main() {
unsigned long long int num;
unsigned long long int mask;
scanf("%llu", &num);
mask = 0x80000000;
while(mask >>= 1) {
if (mask & num)
break;
}
printf("%llu\n", mask);
return 0;
}
谢谢:)