La espada se refiere a la oferta 15. El número de 1 en binario

La espada se refiere a la oferta 15. El número de 1 en binario

Descripción del Título

Inserte la descripción de la imagen aquí

Ideas para resolver problemas

Desplazamiento de ciclo y bit

Compruebe cada bit del número entero con la máscara y siga moviendo la máscara hacia la izquierda.

El número de ciclos es igual al número de dígitos binarios del entero. Un entero de 32 bits necesita ser ciclado 32 veces.

public class Solution {
    
    
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
    
    
        int bits = 0;  //二进制 1 的个数
        int mask = 1;  //用掩码检查每一位是否为1

        for (int i = 0; i < 32; i++) {
    
    
            if ((n & mask) != 0) {
    
    
                bits++;
            }
            mask <<= 1;   //右移一位
        }
        return bits;
    }
}

Consejos para la manipulación de bits

Este tipo de solución puede darse cuenta de que hay algunos 1 en el binario entero y solo es necesario repetirlo unas pocas veces.

Si un número entero no es 0, entonces el binario del número entero tiene al menos un 1. Si resta 1 de este número entero, el 1 original más a la derecha se convertirá en 0, y todos los 0 originalmente a la derecha de este 1 se convertirán en 1, y todos los bits restantes no se verán afectados. Por ejemplo, 1100 menos 1 se convierte en 1011.

Usando las reglas anteriores, si n y n-1 se anotan en AND, el 1 de n más a la derecha se eliminará y los bits restantes no se verán afectados , por ejemplo, 1100 y 1011 = 1000. Entonces, tantas veces como haya unos en n, se realizarán tales operaciones.

public class Solution {
    
    
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
    
    
        int bits = 0;  //二进制 1 的个数

        while (n != 0) {
    
    
            bits++;
            n &= (n - 1);
        }
        return bits;
    }
}

Supongo que te gusta

Origin blog.csdn.net/cys975900334/article/details/114835844
Recomendado
Clasificación