Maison  >  Article  >  développement back-end  >  Comment compter le nombre de chiffres dans un nombre à virgule flottante en C ?

Comment compter le nombre de chiffres dans un nombre à virgule flottante en C ?

PHPz
PHPzavant
2023-09-08 22:53:061217parcourir

Dans cette question, une valeur à virgule flottante est donnée. Nous devons trouver le nombre de bits définis dans sa représentation binaire.

Par exemple, si le nombre à virgule flottante est 0,15625, il y a six bits définis. Un compilateur C typique utilise une représentation à virgule flottante simple précision. Donc ça ressemble à ça.

Comment compter le nombre de chiffres dans un nombre à virgule flottante en C ?

Pour convertir en valeur binaire, nous devons mettre le nombre dans une variable de pointeur, puis convertir le pointeur en données de type char*. Traitez ensuite chaque octet un par un. Nous pouvons alors calculer les bits définis pour chaque caractère.

Exemple

#include <stdio.h>
int char_set_bit_count(char number) {
   unsigned int count = 0;
   while (number != 0) {
      number &= (number-1);
      count++;
   }
   return count;
}
int count_float_set_bit(float x) {
   unsigned int n = sizeof(float)/sizeof(char); //count number of characters in the binary equivalent
   int i;
   char *ptr = (char *)&x; //cast the address of variable into char
   int count = 0; // To store the result
   for (i = 0; i < n; i++) {
      count += char_set_bit_count(*ptr); //count bits for each bytes ptr++;
   }
   return count;
}
main() {
   float x = 0.15625;
   printf ("Binary representation of %f has %u set bits ", x, count_float_set_bit(x));
}

Sortie

Binary representation of 0.156250 has 6 set bits

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer