JS-oferta cepillo probar título historial de seguridad (operación de bit)

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 0Aquí Insertar imagen Descripción
function NumberOf1(n){
    let count = 0
    while(n){
        n&=n-1
        count++
    }
    return count
}
Publicado 21 artículos originales · ganado elogios 0 · Vistas 178

Supongo que te gusta

Origin blog.csdn.net/adrenalineiszzz/article/details/104837967
Recomendado
Clasificación