워드에서 1인 비트의 개수를 구하기

n에는 항상 0을 넣어서
func(x, 0);
형태로 쓰시면 됩니다.

보시다시피 1인 bit를 오른쪽부터 하나씩 끄는 방식입니다.
따라서 1인 bit가 적을 수록 빠릅니다.

반대로 그런 bit가 많으면,
0인 bit를 오른쪽부터 켜고
마지막에 그 카운트를 32에서 빼는 게 더 빠릅니다.

위와 비슷한 코드이기에 따로 올리지는 않겠습니다.

이상입니다.

2 Likes

재귀보다 for문으로 처리하는게 더빠르지 않나용?

컴파일러 최적화 옵션 쓰면 성능은 동일해요~
다만 빌드 환경상 옵션 사용에 제약이 있으면 반복문이 나을것 같네요.

1 Like

컴파일러 익스텐션 …

갓파일러…

n이 항상 0이라면 굳이 n을 매개변수로 넣어야 하나요? 최적화 옵션 때문에 그런건지…

라고 생각했는데 점점 증가하네요;;

꼬리재귀 형태로 만드려고 인자로 넣었어요 ㅋㅋ

몸에 좋고 맛도 좋은 __builtin_popcount 쓰십시오