Un número entero binario de 1

Método uno:

Ideas:. Si un número con 1 para el cálculo se puede encontrar en el número del último dígito es 1, 0 en otro caso
De acuerdo con esta forma de pensar puede tener el siguiente código:

1 #include <iostream>
 2    usando  espacio de nombres std;
3  
4    int main ()
 5    {
 6  
7        int n = 0 ;
8        tribunal << " 输入一个数" ;
9        cin >> n;
10        int count = 0 ;
11        , mientras que (n)
 12  {
 13  
14        si (n y 1 )
 15        {
 16            recuento ++ ;
17       }
 18 es        n - >> = 1 ;
 19.    }
 20 es        COUT << " número de 1s " << COUNT << endl;
 21 es        el retorno  0 ;
 22 es    }

Escribir imágenes describen aquí

Sin embargo, hay algunos defectos en este método si la entrada es bucle negativo será mueren infinita

Segundo método:

N 1 y la primera operación que ver con determinar el bit más bajo de n no es 1. Entonces el de la izquierda obtuvo 1 2, n, y luego hacer con el cálculo, se puede determinar el tiempo n no es 1 ... baja. Por lo tanto la izquierda repetidamente, cada vez que n puede ser determinado que no es una solución de la 1 número entero binario de ciclos igual al número de bits, un número entero de 32 a 32 ciclos de necesidad

1 #include <iostream>
 2    usando  espacio de nombres std;
3  
4    int main ()
 5    {
 6  
7        int n = 0 ;
8        int clave = 1 ;
9        tribunal << " 输入一个数" ;
10        cin >> n;
11        int count = 0 ;
12        , mientras que (tecla)
 13  {
 14  
15        si (n y llave)
 16        {
 17           contar ++ ;
18        }
 19        clave << = 1 ;
20    }
 21        cout << " 1的个数为" << recuento << endl;
22        de retorno  0 ;
23    }

método Tres

Ideas: número entero a un signo menos 1, y luego que ver con la aritmética de enteros original, el número entero será el tope derecho un 1 a un 0, entonces la representación binaria de un número entero tiene
el número 1, de cuántas veces se puede realizar tal operación.

1 #include <iostream>
 2    usando  espacio de nombres std;
3  
4    int main ()
 5    {
 6  
7        int n = 0 ;
8        tribunal << " 输入一个数" ;
9        cin >> n;
10        int count = 0 ;
11        , mientras que (n)
 12  {
 13            n = ((n - 1 ) y n);
14            recuento ++ ;
15  
16    }
 17       tribunal << " 1的个数为" << recuento << endl;
18 }

 

Final de este artículo.

[Reservado] https://blog.csdn.net/weibo_dm/article/details/80531465

Supongo que te gusta

Origin www.cnblogs.com/yelao/p/12536398.html
Recomendado
Clasificación