1. El número de 1 binario
mi solución
La idea es empezar número correcto se convierte en representación binaria, con el método toString (), y luego indexOf para encontrar un registro. A continuación, ejecute el vscode, creo que en lugar hermoso, no complementarlo!
otros análisis
Aquí implica algún conocimiento básico de la computadora, esta ciencia había olvidado, aquí para ordenada registro.
El primero es el anti-código más básico complementar el código original, los siguientes enlaces por escrito con mucha claridad: el código original, el código anti-complemento Detallada
- Se almacena en el complemento del equipo
- Cada número entero es de 4 bytes, 32 bits
- Un número positivo del código original, anti-código y complementar todos iguales
Método A: Análisis bit a bit
-
El funcionamiento conjunto de definiciones de número binario de n, entonces:
cuando n y 1 = 0, entonces n binario uno más a la derecha es 0;
si n y 1 = 1, entonces n binario uno más a la derecha es 1. -
De acuerdo con la descripción anterior, el siguiente ciclo:
cuando el número n no es un movimiento a izquierda y derecha es igual a 0, el final del ciclo;
n&1 == 1
,,count++
n la correcta.
Pregunta: ¿Cómo el número n es negativo
- Complementar el bit más significativo es 1 se representa como un bit de signo negativo.
n>>1
, Firmado derecha, hacia la izquierda para llenar una posición, el bucle sin fin;n>>>1
, Desplazamiento sin signo derecha, 0 a la izquierda para llenar el último número n se convierte en 0.
function NumberOf1(n){
let count = 0
let flag = 1
while(n){
count +=n&flag
n = n >>>1
}
return count
}
Método dos: n y (n-1)
Este método es ingenioso
- n-1: n dígitos binarios más a la derecha 1 se convierte en 0, la 01 a la derecha se han convertido en 1
- n y (n-1): n más a la derecha dígito binario 0 se convierte en 1, los otros bits sin cambios
- 1 n número de cuántos, cuántas de estas operaciones será capaz de hacer, saber el número n se convierte en 0
function NumberOf1(n){
let count = 0
while(n){
n&=n-1
count++
}
return count
}