Notice
250x250
Recent Posts
Recent Comments
Link
넘치게 채우기
비트 연산: 가장 오른쪽 1을 없애기 본문
728x90
반응형
#include <iostream>
int countOnesInDecimal(int n)
{
int count = 0;
while (n)
{
std::cout << n << std::endl;
n = n & (n - 1); // 가장 오른쪽에 있는 1 비트를 제거
count++;
}
return count;
}
int main()
{
int n = 25; // 예시로 25를 사용
int result = countOnesInDecimal(n);
std::cout << n << "의 이진 표현에서 1의 개수: " << result << std::endl;
return 0;
}
n = n & (n-1)을 통해서 n의 가장 오른쪽에 있는 1 비트를 없앨 수 있습니다.
아래 필기를 보면 이해하기 쉬울 겁니다.
참고 문제)
https://riveroverflow.tistory.com/340
728x90
반응형
'컴퓨터과학 > 비트마스킹' 카테고리의 다른 글
비트 연산 : 십진수의 이진수 표기에서의 1의 개수 구하기 (0) | 2023.09.01 |
---|