¿Qué es un buen algoritmo para convertir un número decimal de coma flotante con muchos, muchos decimales en el equivalente binario?

La rutina para convertir un punto flotante decimal arbitrario a binario como Quora User Points tiene dos partes: conversión de enteros y conversión de fracciones. No estoy de acuerdo con George en 2 puntos: evite usar la división si puede, ya que es computacionalmente lento, y estamos convirtiendo a binario para que no use 10 que usará 2. No nos cuenta sobre la salida formato que desee, así que supondré que solo asigne bits, depende de usted hacer algo con ellos. Principalmente programo C, así que algunos pseudocódigo de estilo C.

Este código no tiene en cuenta el error de cálculo numérico. Esto dependerá de la cantidad de represiones utilizadas.

Parte entera

if (integer_part <0) {
signo = -1;
integer_part = -integer_part;
}
más signo = 1;

while (integer_part> 0) {
next_bit = integer_part & 1;
entero_parte >> = 1;
}

Parte de la fracción

while (fraccion_parte> 0) {
fracción_parte * = 2.0;
if (fracción_parte> = 1) {
next_bit = 1;
fracción_parte – = 1;
}
más next_bit = 0;
}

EDITAR
Parte entera fija. Como Scott Berry señaló correctamente, hubo problemas con el entero original si integer_part era negativo.

Realmente no hay sustituto para un bucle, que primero pasa por los dígitos a la izquierda del punto decimal, multiplica el total por diez y suma el nuevo dígito.

Luego pasa por el resto de los dígitos, divide 1.0 por diez y agrega ese producto.

Y luego arreglando el letrero.

Cerca de 20 líneas en la mayoría de los idiomas.

More Interesting

Cómo desarrollar un juego y cuánto conocimiento matemático se necesita para desarrollar los gráficos en el juego.

¿Me engañé buscando un algoritmo para calcular la secuencia de Fibonacci?

Cómo ser bueno en matemáticas para la programación competitiva

¿Cuáles son las áreas más activas de investigación en matemática computacional?

Regresión logística, función softmax. ¿Por qué utiliza la función exponencial en la función sigmoidea?

Teoría de la complejidad computacional: ¿Hay conjeturas famosas que alguna vez se creyeron firmemente que eran ciertas pero que luego se demostraron falsas?

¿Qué módulo será más útil, análisis multivariado o análisis bayesiano?

Si tuviera la oportunidad de rediseñar el programa de cuatro años de Ciencias de la Computación de su universidad, entonces, ¿qué programa diseñaría?

Cómo demostrar que existe un conjunto de movimientos para que todos los elementos de la matriz se conviertan en 0, donde en un movimiento tienes que elegir dos elementos distintos de cero y restar uno de los dos dada una condición

¿Por qué es importante para un programador tener un buen dominio de los conceptos matemáticos?

En un algoritmo de tiempo lineal, ¿cómo se comportaría el algoritmo si utilizáramos la mediana del máximo de cada conjunto de 5?

¿Qué es un algoritmo eficiente para encontrar los primeros cinco números primos de diez dígitos?

Dadas las ventajas de usar el ternario como base de las computadoras, y la experiencia de los soviéticos, ¿por qué no hay computadoras cuaternarias ternarias o imaginarias? Knuth aprobó el ternario y propuso el cuaternario como eficiente para la computación científica.

Si desmantelo un cubo de Rubik y luego lo vuelvo a montar de todas las formas posibles, ¿cuántos cubos distintos de Rubik son posibles?

¿Cómo se puede determinar y mostrar la velocidad de un algoritmo (complejo) en notación Big O?