Ecrire du code à réaliser: trouver le nombre de 1 dans un entier stocké en binaire

Trouver le nombre de 1 dans un entier stocké en binaire

L'entier est un nombre décimal. Le convertir en nombre binaire entraînera un nombre binaire de 32 bits. Par
exemple, 00000000000000000000000000001011.
Nous pouvons déplacer le nombre binaire en continu pour penser qu'il est égal au 1 précédent, de sorte que tant que le résultat de chacun et 1 est 1, ce bit La position 1
est calculée par count ++, sinon elle vaut 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;
}

Insérez la description de l'image ici
2. Bien que nous ayons écrit le code que nous voulons, il doit être exécuté 32 fois à chaque fois, est-ce un peu gênant?
Optimisons

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

Insérez la description de l'image ici
Merci d'avoir regardé!

Je suppose que tu aimes

Origine blog.csdn.net/weixin_54748281/article/details/113784225
conseillé
Classement