Como encontrar o número de 1's em um número binário no tempo O (1)?

Eu sei que isso foi perguntado antes, mas eu estou olhando para esta solução particular listadaAqui:

int BitCount(unsigned int u)
{
     unsigned int uCount;

     uCount = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111);
     return ((uCount + (uCount >> 3)) & 030707070707) % 63;
}

Como funciona?

Há alguma ressalva envolvida aqui?

Teoricamente é possível encontrar a resposta em tempo constante? Quero dizer, não nós realmenteter para percorrer os bits para contar?

questionAnswers(4)

yourAnswerToTheQuestion