C++ 언어로 정수에서 1이 설정된 비트(Bit) 수 세기

어떤 정수형 변수의 값을 조사해서, 1로 설정된 비트 수가 몇 개나 되는지 알아야 할 때가 있습니다. 이럴 때엔 다음처럼 bitset::count를 이용하면 편합니다.

unsigned int count_bits_set(unsigned int input_value)
{
	return std::bitset<10>(input_value).count();
}

직접 알고리듬을 짜야 할 경우, 직관적이고 쉬운 방법은 다음과 같습니다.

unsigned int count_bits_set(unsigned int input_value)
{
	unsigned int number_of_bits_set = 0;
	for (; input_value > 0; input_value >>= 1)
		number_of_bits_set += input_value & 1;
	return number_of_bits_set;
}

좀 더 빠른 방법을 찾으려면, 검색 엔진에서 count bit라는 검색어로 검색하면 됩니다.

Advertisements

2 thoughts on “C++ 언어로 정수에서 1이 설정된 비트(Bit) 수 세기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중