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;
}
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;
}
Merci d'avoir regardé!