for 루프 또는 while 루프를 사용하지 않고 0xFF보다 큰 상수를 사용하지 않고 C의 32 비트 정수 x에서 1의 수를 계산하는 가장 좋은 방법은 무엇입니까?정수에서 1의 개수 계산 C
내가 생각한 것은 x24를 오른쪽으로 시프트하고 이동 된 정수에 얼마나 많은 1이 있는지 계산하고이를 가변 개수로 저장하는 것입니다. 그런 다음 x 16을 오른쪽으로 시프트하고 시프트 된 정수에서 1의 수만큼 카운트를 증가시킵니다.
그럼 더 좋은 해결책이 있습니까?
코드는 구현 정의 동작에 크게 의존합니다. 즉, 이식 가능하지 않습니다. <25 비트 int 형 플랫폼에서 너무 큰 시프트 수에 대해 정의되지 않은 동작을 호출 할 수도 있습니다. 부호있는 정수를 이동하는 것은 문제가됩니다. sign-bit가 포함되지 않는다는 것을 보장 할 수 없다면 (즉, 그것을 피하십시오). – Olaf
숫자의 수에 따라 숫자 또는 기본의 이진 표현을 의미합니까? – Mitchel0022
이진 표현의 수는 –