posted by REDFORCE 2017. 9. 15. 16:38

바이트에서 1인 비트의 갯수를 새는 방법은 여러가지가 있으나

본 글에서 적는 방법은 MSDN에서 제시하는 방법을 기술하고자 합니다.


간단히 비트 플래그 갯수를 새는 방법은 다음과 같은 코드로 수행할 수 있습니다.


WORD GetNumberOfBits( DWORD dwMask )
{
    WORD wBits = 0;
    while( dwMask )
    {
        dwMask = dwMask & ( dwMask - 1 ); 
        wBits++;
    }
    return wBits;
}

위 코드는 MSDN에 적혀있는 코드입니다.


API 형식의 자료형으로 적혀있어서 기본 C++ 형태로 바꾼 코드는 다음과 같습니다.




가볍게 MSDN 코드를 바꾸어 테스트 코드와 비트 갯수를 세는 코드만 적어두었습니다.