Heim  >  Artikel  >  Backend-Entwicklung  >  Wie zähle ich die Anzahl der Ziffern einer Gleitkommazahl in C?

Wie zähle ich die Anzahl der Ziffern einer Gleitkommazahl in C?

PHPz
PHPznach vorne
2023-09-08 22:53:061220Durchsuche

In dieser Frage wird ein Gleitkommawert angegeben. Wir müssen die Anzahl der gesetzten Bits in ihrer binären Darstellung ermitteln.

Wenn die Gleitkommazahl beispielsweise 0,15625 ist, sind sechs Bits gesetzt. Typische C-Compiler verwenden eine Gleitkommadarstellung mit einfacher Genauigkeit. Es sieht also so aus.

Wie zähle ich die Anzahl der Ziffern einer Gleitkommazahl in C?

Um in einen Bitwert umzuwandeln, müssen wir die Zahl in eine Zeigervariable einfügen und dann den Zeiger in Daten vom Typ char* umwandeln. Verarbeiten Sie dann jedes Byte einzeln. Anschließend können wir die gesetzten Bits für jedes Zeichen berechnen.

Beispiel

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

Ausgabe

Binary representation of 0.156250 has 6 set bits

Das obige ist der detaillierte Inhalt vonWie zähle ich die Anzahl der Ziffern einer Gleitkommazahl in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen