Heim > Backend-Entwicklung > C++ > 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
Freigeben: 2023-09-08 22:53:06
nach vorne
1235 Leute haben es durchsucht

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));
}
Nach dem Login kopieren

Ausgabe

Binary representation of 0.156250 has 6 set bits
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage