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
- Cómo convertir [matemáticas] (- 27) _ {10} [/ matemáticas] a una magnitud con signo binario a mano
- ¿Podrá la inteligencia artificial resolver un problema matemático abierto, como la conjetura de Goldbach o la hipótesis de Riemann?
- Si tengo los números n> 0, k> 0, a> 0 y el número primo x .. ¿Cuál es la forma más rápida de calcular ((n ^ k) * a) módulo x?
- ¿Cuál es la base matemática necesaria para la programación competitiva?
- Coloque números de cinco bits en los vértices de un hipercubo de 9 dimensiones de modo que, desde cualquier vértice, pueda alcanzar cualquier número en no más de dos movimientos a lo largo de los bordes del hipercubo.
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.