Dalam soalan ini, nilai titik terapung diberikan. Kita perlu mencari bilangan bit set dalam perwakilan binarinya.
Sebagai contoh, jika nombor titik terapung ialah 0.15625, terdapat enam set bit. Penyusun C biasa menggunakan perwakilan titik terapung ketepatan tunggal. Jadi ia kelihatan seperti ini.
Untuk menukar kepada nilai bit, kita perlu meletakkan nombor itu ke dalam pembolehubah penunjuk dan kemudian menghantar penuding ke data jenis char*. Kemudian proses setiap bait satu demi satu. Kita kemudian boleh mengira bit set untuk setiap aksara.
#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
Atas ialah kandungan terperinci Bagaimana untuk mengira bilangan digit dalam nombor titik terapung dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!