我目前正在尝试编写一个算法,确定表示数字x所需的位数。 我的实现将使用c语言。
然而有一些限制,我基本上只能使用位运算符{〜,&,^,|,+,<<,>>}。此外,我不能使用任何类型的控制流(if,while,for)。
我的原始方法是从左到右检查二进制中的数字,并查找第一个“1”的出现位置。考虑到我的限制,我不确定该如何实现这一点。
我正在使用被视为无符号整数的数字。因此,00110只需要3位。
我想知道是否有更轻松/更简洁的方法来做到这一点并且我遗漏了它?
或者,如果有人可以给出一些提示?
基本上,我正在尝试在不使用while循环的情况下实现这个功能:
int result = 0;
while (x >>= 1) {
result += 1;
}
return result;