我處於搜索「最高有效位」的特殊情況下結果太多了,我無法找到符合我需要的答案!查找長整數中最顯着的位集合
這個問題本身很簡單:「如何找到無符號長整數中最重要的位?當我進行計算時,最右邊的位置是位置'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
}
「最顯著位」和「最右邊的位」可能是不同的東西 – LihO
我做出的某處一個錯字?如果我這樣做,我很抱歉。我的意思是找到最左邊的一組位。 – Joshua
@LihO:是的,但這是解釋性的,即位位置值從0開始從右向左增加。 –