Descripción Asunto:
Por favor, diseñar una función, un número de entradas, salidas el número 1 indica el número de dos, Ltd.
Ejemplo: 9 se representa como sistema de dos 1001 tiene dos 1
Ideas de resolución de problemas:
Se trata de los principales sitios de prueba pregunta utilizando las operaciones de conversión y de bits binarios flexibles. He enumerado tres formas de lograrlo :
Método a : eliminación Método 1 (Principio: N - 1 puede ser N 1 del bit menos significativo es 0, las características de la parte posterior 1 es el bit menos significativo de 0, N y (N - 1) puede ser eliminado a un bit menos significativo, la última vez hasta la eliminación de un 1, el resultado es 0)
Método dos : 32 ciclos, usando aritmética de 1 bit y la comparación bit a bit Comparación
Método tres : cuando la conversión de binario, para acumular el resto es 1
@ Método A: Método 1 eliminación pública estática int F ( int n-) { int COUNT = 0 ; el tiempo (! = N-0 ) {// cuando el resultado es cero, indicando que nadie, no borra n- = & N- (N- 1); // borrado método 1 núcleo recuento ++; // cada vez que un recuento de borrado más 1 } retorno recuento; }
@ Método 2: Uso de 32 ciclos, la comparación bit a bit pública estática int F2 ( int n-) { int COUNT = 0 ; para ( int i = 0; I <32; I ++ ) { IF (((n - >> I) & 1) == 1) { // correcto que poco, y dejar un poco con la operación más bajo. ++ COUNT ; } } retorno COUNT; }
@ Método tres: cuando el interruptor binario, el resto de la estadística 1 pública estática int F3 ( int n) { int count = 0 ; int Shang = N-; int Yu; al mismo tiempo (! Shang = 0) { // decimal núcleo de conmutador binario Yu Shang% = 2; // para encontrar resto Shang Shang = / 2; // entonces cociente IF (Yu == 1. ) { COUNT ++; // para el resto de una estadística } } retorno COUNT; }