Los números enteros pueden pasarse de base 16 (hexadecimal) a base 2 (binario) convirtiendo cada dígito por separado; por ejemplo, CAFE en hexadecimal equivale a 1100 1010 1111 1110 en binario. Esta misma técnica puede extenderse a los números en coma flotante, pese a ser un truco poco conocido.
En Python no existe una función directa que devuelva la representación binaria de un float, pero sí existe el método .hex(), que devuelve la notación hexadecimal del número. Por ejemplo, math.pi en hexadecimal es 0x1.921fb54442d18p+1. La parte final p+1 indica un exponente en base 2 —y no en base 16, como cabría esperar— por lo que, tras convertir la fracción hexadecimal a binario, hay que multiplicar por 2 desplazando el punto fraccionario un lugar a la derecha.
El proceso consiste, por tanto, en convertir cada dígito hexadecimal (1, 9, 2, 1, F, B…) a su equivalente binario de 4 bits, reconstruir la cadena resultante y, finalmente, aplicar el desplazamiento que indique el exponente. Aplicado al número π, el resultado es 11.001001000011111101101010100010001000010110100011000 en binario.
Como alternativa, puede usarse la función bin() de Python tomando la parte fraccionaria como entero, cuidando de rellenar con ceros a la izquierda y a la derecha según sea necesario. Para 1.03, por ejemplo, se añaden cuatro ceros a la izquierda para representar el 0 que sigue al punto fraccionario y un cero a la izquierda al convertir el 7 hexadecimal a 0111 en binario, obteniendo 1.000001111010111000010100011110101110000101000111.
