"가장 중요한 비트"를 검색하는 경우 이 너무 많아 결과가 너무 많아서 내 요구 사항에 맞는 대답을 찾을 수 없습니다.긴 비트로 가장 중요한 비트 찾기
질문 자체는 매우 간단합니다. "부호없는 long에서 가장 중요한 세트 비트를 어떻게 찾을 수 있습니까?" 계산을 할 때 가장 오른쪽의 비트 위치는 '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에서 시작하여 오른쪽에서 왼쪽으로 증가합니다. –