Cuando no se consideran los números negativos, para este análisis, podemos ver que cuando el valor de entrada es inferior a 1, este número definitivamente no es una potencia entera de 2.
Cuando el valor de entrada es mayor que uno, podemos encontrar una regla. El poder entero de 2 se expresa en binario como:
2d = 10b; 4d = 100B; 8d = 1000B
El primer bit del binario es uno, y el resto es cero.
Por lo tanto, podemos juzgar que cuando el valor de entrada se convierte en binario, el primer bit es uno y los otros bits son 0, por lo que el valor de entrada es una potencia entera de 2.
Sin embargo, hacer esto es demasiado engorroso. Solo podemos juzgar la posición de "1" en el número binario por última vez, y usar la cadena, lastindexof (); método.
Y también podemos encontrar que esta regla también se aplica al caso donde se ingresa la entrada 1.
Entonces el código conciso surgió.
public static boolean isPowerOftWo (int n) {string str = integer.tobinarystring (n); if (n <1) return false; else if (str.lastIndexOf ("1") == 0) return true; elsereturn false; }El método Java anterior para determinar si un poder entero de 2 es todo el contenido compartido por el editor. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.