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);
}
}