Es potencia de 2?

El otro día me encontré una función muy curiosa. Se trata de una función que te dice si un numero es potencia de 2 sin tener que hacer la pesada tarea de una raíz cuadrada, que es lo que haríamos todos seguramente, ver si al hacerle la raíz cuadrada nos deja decimales o no.

bool ispow2(int x)
{
    return !((~(~0U>>1)|x)&x -1) ;
}

Comentarios

Publicar un comentario