Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 숫자의 총 세트 비트(Set Bits) 개수 계산하기

C#으로 숫자의 세트 비트 개수 계산하기

이진수에서 값이 1인 비트를 세트 비트(set bit)라고 합니다. 이 글에서는 C#을 사용해 특정 숫자에 포함된 총 세트 비트의 개수를 구하는 방법을 알아보겠습니다.

예시로 사용할 숫자는 십진수 11이며, 이를 이진수로 변환하면 다음과 같습니다.

1011

1011에는 세트 비트(1)가 총 3개 있습니다. 이를 구하려면 숫자가 0이 될 때까지 반복문을 실행하며 각 비트를 하나씩 확인하면 됩니다.

세트 비트 계산 로직

핵심은 비트 연산자를 활용하는 것입니다. num & 1은 가장 오른쪽 비트(LSB)가 1인지 검사하고, num >>= 1은 비트를 오른쪽으로 한 칸 시프트하여 다음 비트를 차례대로 확인할 수 있게 해줍니다.

while (num > 0) {
    cal += num & 1;
    num >>= 1;
}

전체 예제 코드

아래 코드를 사용하면 숫자의 총 세트 비트 개수를 셀 수 있습니다.

using System;
public class Demo {
    public static void Main() {
        int cal = 0;
        // 11의 이진수는 1011
        int num = 11;
        while (num > 0) {
            cal += num & 1;
            num >>= 1;
        }
        // 1011에서 1인 비트는 3개
        Console.WriteLine("Total bits: " + cal);
    }
}

실행 결과

Total bits: 3

추가 팁

이처럼 간단한 반복문과 비트 연산만으로도 세트 비트 개수를 손쉽게 계산할 수 있습니다. 참고로 .NET Core 3.0 이상 환경에서는 System.Numerics.BitOperations.PopCount() 메서드를 사용하면 하드웨어 명령어 기반으로 더 빠르게 처리할 수도 있습니다.