Maison > développement back-end > C++ > 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
Libérer: 2023-09-08 22:53:06
avant
1235 Les gens l'ont consulté

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));
}
Copier après la connexion

Sortie

Binary representation of 0.156250 has 6 set bits
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal