Para un entero positivo n, ¿qué comprueba n & (n - 1) == 0?
Opciones
- n es un número par
- n es una potencia de dos (Opción correcta)
- n es un número primo
- n es un número impar
Respuesta
n es una potencia de dos
Por qué
En binario, una potencia de dos tiene exactamente un bit a 1: 8 = 1000. Restar 1 invierte ese bit y pone a 1 todos los bits inferiores: 7 = 0111.
El AND (&) de 1000 y 0111 es 0000. Cualquier número con dos o más bits a 1 conserva al menos uno, así que el resultado no es 0.
El mismo truco n & (n - 1) quita el bit a 1 más bajo, lo que ayuda a contar bits.
Recuerda
n & (n-1) == 0 → potencia de dos.