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.
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.
#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
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!