Título Descripción Ingrese un número entero y envíe el número de unos en la representación binaria de 32 bits del número. El número negativo está representado por el complemento a uno.

Descripción del título
Introduzca un número entero y emita el número de unos en la representación binaria de 32 bits del número. El número negativo está representado por el complemento a uno.


Entrada del ejemplo 1

10

valor de retorno

2

Ideas para resolver problemas:
primero observemos la forma binaria de un conjunto de números:

000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Observamos el entero correspondiente a este binario, y observamos la relación entre el n-ésimo número y el n-1o número, y los dígitos binarios:
por ejemplo , el número binario del número 6, el primer 1 por la derecha y el después de 0, y 5 corresponde a binario y 6 corresponde al número correspondiente al más a la derecha 1 está invertido, y a la derecha, lo mismo es cierto. Es decir, mirando a la primera 1 desde el lado derecho de la binaria de n, el dígito correspondiente del binario de n-1 se obtiene invirtiendo n (por ejemplo, 6- "10, y 5 corresponde a 01).
De esta característica, podemos hacer que n sea AND con n-1, de modo que los dígitos binarios que comienzan desde el primer 1 desde el lado derecho se convertirán en 0, y el resultado será AND con el dígito anterior nuevamente. . . Este bucle hasta el resultado de la fase y es igual a 0. Calcula el número de fases y podrás saber cuántos unos hay en el binario de n;

Código:

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

Supongo que te gusta

Origin blog.csdn.net/weixin_43815275/article/details/113915479
Recomendado
Clasificación