我处于独特的情况,搜索“最重要的位”会产生太多结果,而我找不到适合我需要的答案!
问题本身很简单:“如何在无符号长整数中找到最重要的设置位?” 当我进行计算时,最右边的位位置是位置“0”。
我知道它涉及屏蔽最低位,检查然后左移一次,同时增加我的计数,然后重复第二低位,等等。
我以前做过,但出于某种原因,我现在不能这样做。
编辑:“最重要”是指最左边的设置位,如有任何混淆,请见谅!*
以下是我的功能解决方案和一些测试用例:
#include <stdio.h>
int findExponent( unsigned long L ){
int exponent = -1;
unsigned long shift = L;
while( 0 != shift )
exponent++, shift >>=1;
if ( exponent >= 0 )
printf("The most significant bit of L is at position %d\n", exponent);
else{
exponent = 0;
printf("L is zero\n");
}
return exponent;
}
int main(int argc, char** argv){
long check = 8L;
findExponent( check );//2
findExponent( 21421L );//14
findExponent( 0L );//(is zero)
findExponent( 1L );//0
}