Número de unos en operación binaria bit a bit

tema

Enlace de tema: el número de 1 en binario

responder

Convierta decimal a binario y divida después del módulo.
Para números negativos, necesitamos generar el complemento de su valor absoluto.
Cuando aparece un número negativo, regístrelo como un número negativo y tome el valor absoluto. Para recorrer el sistema binario, determine si el bit es 1 o 0, y registre.
Si el número es negativo,
envíe el número 32-0 ; de lo contrario, envíe el número 1 (bitCount también se puede usar directamente).

Código AC

Método 1

class Solution {
public:
    int NumberOf1(int n) {
        bool flag = false;
        if (n < 0) {
            flag = true;
            n = -n;
        }
        int z = 0, o = 0;
        while (n != 0) {
            int t = n % 2;
            if (t==0) z++;
            else o++;
            n /= 2;
        }
        return flag ? (32 - z) : o;
    }
};

Método 2

class Solution {
public:
    int NumberOf1(int n) {
        int cnt = 0;
        while (n) {
        	n &= (n-1);
        	cnt++;
        }
        return cnt;
    }
};

Método 3

class Solution {
    public int NumberOf1(int n)
    {
        return Integer.bitCount(n);
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_45934120/article/details/107986097
Recomendado
Clasificación