इस समस्या में, एक फ्लोटिंग पॉइंट मान दिया जाता है। हमें इसके द्विआधारी प्रतिनिधित्व में सेट बिट्स की संख्या का पता लगाना है।
उदाहरण के लिए, यदि एक फ्लोटिंग पॉइंट नंबर 0.15625 है, तो छह सेट बिट्स हैं। एक ठेठ सी संकलक एकल परिशुद्धता फ़्लोटिंग पॉइंट प्रतिनिधित्व का उपयोग करता था। तो यह इस तरह दिखेगा।
इसके बिट वैल्यू में बदलने के लिए, हमें नंबर को एक पॉइंटर वेरिएबल में लेना होगा, फिर पॉइंटर को char* टाइप डेटा में टाइप करना होगा। फिर प्रत्येक बाइट को एक-एक करके प्रोसेस करें। तब हम प्रत्येक चार के सेट बिट्स को गिन सकते हैं।
उदाहरण
#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