답변

5

당신은과 더불어, set으로 비트의 문자열을 간주 할 수 있습니다 해당 요소에 대한 집합의 구성원을 나타내는 1 따라서 비트 카운트는 population count 세트를 제공합니다.

실제 응용 프로그램에는 압축, 암호화 및 오류 수정 코드가 포함됩니다. 예 : wikipedia.org/wiki/Hamming_weightwikipedia.org/wiki/Hamming_distance.

0

자신의 패리티 구성표를 사용하는 경우 비트 수를 계산할 수 있습니다. (일반적으로, 물론, 나는 다른 사람들을 사용하고 싶습니다.) 오래된 컴퓨터를 에뮬레이션하고 원래 컴퓨터에서 얼마나 빨리 실행했는지 추적하고 싶다면, 일부는 속도가 숫자에 따라 달라지는 곱셈 명령어를가집니다 1 비트.

저는 지난 10 년 동안 그것을하고 싶었습니다. 그래서 저는 이것이 실용적인 필요 이상의 프로그래밍 연습이라고 생각합니다.

+0

당신의 CPU가'하지 않는 한 당신은 (직접 인구 수보다 적은 수의 운영과 패리티를 계산할 수 있습니다 POPCNT' 또는 유사). –

0

아이러니 컬하게도 인터뷰 질문에 유용합니다. 세부적인 저급 사고가 필요하고 종합 과학 코스의 표준 알고리즘으로 가르쳐지지 않는 것 같습니다.

0

일부 사람들은 비트 맵을 사용하여 "물건"의 유무를 나타냅니다.

단어의 최하위 1 비트를 분리하여 그 아래 비트의 1의 필드로 변환하는 간단한 해킹이 있습니다. 그런 다음 1 비트를 계산하여 비트 수를 찾을 수 있습니다.

countbits((x XOR (x-1)))-1; 

Watch it. 설정 3 비트가

Let x =  00101100 
Then x-1 = 00101011 
x XOR x-1 = 00000111 

, 그래서 둘이었다 비트 원래 단어 최하위 1 비트

관련 문제