Escriba el código para lograrlo: encuentre el número 1 en un entero almacenado en binario

Encuentra el número de unos en un entero almacenado en binario

El entero es un número decimal. Convertirlo en un número binario dará como resultado un número binario de 32 bits. Por
ejemplo, 00000000000000000000000000001011.
Podemos mover el número binario continuamente para pensar que es igual al 1 anterior, de modo que siempre que el resultado de cada uno y 1 es 1, este bit El 1 en la posición
se calcula mediante count ++, de lo contrario es 0.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
	int num = 0;
	int count = 0;
	scanf("%d", &num);
	int i = 0;
	for (i = 0; i<32; i++)
	{
    
    
		if (1 == ((num >> i) & 1))
			count++;
	}
	printf("%d\n", count);
	system("pause");
	return 0;
}

Inserte la descripción de la imagen aquí
2. Aunque hemos escrito el código que queremos, debe ejecutarse 32 veces cada vez, ¿es un poco problemático?
Optimicemos

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
	int num = 0;
	printf("请输入一个整数:");
	scanf("%d", &num);
	int i = 0;
	int count = 0;

	while (num)
	{
    
    
		count++;
		num = num&(num - 1);
	}

	printf("它在二进制中1的个数 = %d\n", count);
	system("pause");
	return 0;
}

Inserte la descripción de la imagen aquí
¡gracias por ver!

Supongo que te gusta

Origin blog.csdn.net/weixin_54748281/article/details/113784225
Recomendado
Clasificación