Bagaimana untuk mengira bilangan digit dalam nombor titik terapung dalam C?

PHPz
Lepaskan: 2023-09-08 22:53:06
ke hadapan
1232 orang telah melayarinya

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.

Bagaimana untuk mengira bilangan digit dalam nombor titik terapung dalam C?

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.

Contoh

#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));
}
Salin selepas log masuk

Output

Binary representation of 0.156250 has 6 set bits
Salin selepas log masuk

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan