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?