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.
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.
#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)); }
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!