넘치게 채우기

비트 연산: 가장 오른쪽 1을 없애기 본문

컴퓨터과학/비트마스킹

비트 연산: 가장 오른쪽 1을 없애기

riveroverflow 2023. 11. 29. 10:46
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

 

[LeetCode] 191. Number of 1 Bits

https://leetcode.com/problems/number-of-1-bits/description/?envType=daily-question&envId=2023-11-29 Number of 1 Bits - LeetCode Can you solve this real interview question? Number of 1 Bits - Write a function that takes the binary representation of an unsig

riveroverflow.tistory.com

 

728x90
반응형