Dado un número de punto flotante , escriba una función para contar bits establecidos en su representación binaria.
Por ejemplo, la representación de punto flotante de 0.15625 tiene 6 bits establecidos (Ver esto ). Un compilador típico de C utiliza un formato de punto flotante de precisión simple .
Podemos usar la idea discutida aquí . La idea es tomar la dirección del número de punto flotante dado en una variable de puntero, convertir el puntero en tipo char * y procesar los bytes individuales uno por uno. Podemos contar fácilmente los bits establecidos en un char usando las técnicas discutidas aquí .
A continuación se muestra la implementación en C de la idea anterior.
C
#include <stdio.h> // A utility function to count set bits in a char. // Refer http://goo.gl/eHF6Y8 for details of this function. unsigned int countSetBitsChar(char n) { unsigned int count = 0; while (n) { n &= (n-1); count++; } return count; } // Returns set bits in binary representation of x unsigned int countSetBitsFloat(float x) { // Count number of chars (or bytes) in binary representation of float unsigned int n = sizeof(float)/sizeof(char); // typecast address of x to a char pointer char *ptr = (char *)&x; int count = 0; // To store the result for (int i = 0; i < n; i++) { count += countSetBitsChar(*ptr); ptr++; } return count; } // Driver program to test above function int main() { float x = 0.15625; printf ("Binary representation of %f has %u set bits ", x, countSetBitsFloat(x)); return 0; }
Producción:
Binary representation of 0.156250 has 6 set bits
Complejidad de tiempo: O (nlogn)
Espacio Auxiliar: O(1)
Este artículo es una contribución de Vineet Gupta . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA