binary - traductor - fracciones en binario
¿Cómo se convierte una fracción a binaria? (5)
1/10(decimal) = 0.0001100110011... (binary)
¿Cómo puedo hacer eso? ¿Se supone que debo convertir a binario y luego dividir? ¿Podría alguien mostrarme?
Aquí es cómo pensar en el método.
Cada vez que multiplicas por 2, estás desplazando la representación binaria del número que queda en 1 lugar. Has desplazado el dígito más alto después del punto al lugar 1, así que quítate ese dígito, y es el primer (más alto, por lo tanto, el más a la izquierda) dígito de tu fracción. Hazlo de nuevo, y tienes el siguiente dígito.
Convertir la base de un número entero dividiendo y tomando el resto como el próximo dígito está desplazando el número a la derecha. Es por eso que obtienes los dígitos en el orden opuesto, el más bajo primero.
Esto, obviamente, se generaliza a cualquier base, no solo a 2, como lo señala GoofyBall .
Otra cosa en que pensar: si redondeas a N dígitos, detente en N + 1 dígitos. Si el dígito # N + 1 es uno, necesita redondear (ya que los dígitos en binario solo pueden ser 0 o 1, truncar con el siguiente dígito un 1 es tan inexacto como truncar un 5 en decimal).
En la universidad lo aprendí de esta manera:
- Multiplicar por dos
- tomar decimal como el dígito
- toma la fracción como punto de partida para el próximo paso
- repite hasta que llegues a 0 o a un número periódico
- lea el número que comienza en la parte superior; el primer resultado es el primer dígito después de la coma
Ejemplo:
0.1 * 2 = 0.2 -> 0
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
Result: 0.00011(0011) periodic.
Esto puede ser algo confuso, pero las posiciones decimales en binario representarían recíprocos de potencias de dos (p. Ej., 1/2, 1/4, 1/8, 1/16, para el primer, segundo, tercer y cuarto lugar decimal, respectivamente) al igual que en decimales, los lugares decimales representan recíprocos de los poderes sucesivos de diez.
Para responder a su pregunta, necesitaría averiguar qué reciprocals de poderes de dos necesitarían agregarse para sumar hasta 1/10. Por ejemplo:
1/16 + 1/32 = 0.09375, que está bastante cerca de 1/10. Agregar 1/64 nos pone al día, al igual que 1/128. Pero, 1/256 nos acerca aún más. Asi que:
0.00011001 binary = 0.09765625 decimal, que está cerca de lo que pidió.
Puede continuar agregando más y más dígitos, por lo que la respuesta sería 0.00011001 ...
Me tomó un tiempo entender la respuesta de @Femaref (''s), así que pensé en dar más detalles.
Elboration
Desea convertir decimal 1/10
que equivale a 0.1
a binario. Comience con 0.1
como su entrada y siga estos pasos:
- Multiplicar la entrada por 2 (columna múltiple)
- Tome decimal de la respuesta (columna de respuesta) como el dígito (columna binaria)
- Tome la fracción (columna de fracción) como entrada para el próximo paso
- Repita los pasos 1, 2 y 3 hasta que llegue a 0 o a un número periódico. El inicio del número periódico en este caso se muestra en la última columna para que podamos detenernos allí. Pero continué mostrando la repetición para mayor claridad.
- La respuesta son los números tomados de la columna binaria que comienza en la parte superior.
En este caso lo es:
0.00011(0011) Note: numbers within parenthesis will keep repeating (periodic)
+-------+-------+--------+---------+----------+--------+----------------------+
| input | mult | answer | decimal | fraction | binary | |
+-------+-------+--------+---------+----------+--------+----------------------+
| 0.1 | 2 | 0.2 | 0 | .2 | 0 | |
| 0.2 | 2 | 0.4 | 0 | .4 | 0 | |
| 0.4 | 2 | 0.8 | 0 | .8 | 0 | |
| 0.8 | 2 | 1.6 | 1 | .6 | 1 | |
| 0.6 | 2 | 1.2 | 1 | .2 | 1 | |
| 0.2 | 2 | 0.4 | 0 | .4 | 0 | |
| 0.4 | 2 | 0.8 | 0 | .8 | 0 | |
| 0.8 | 2 | 1.6 | 1 | .6 | 1 | |
| 0.6 | 2 | 1.2 | 1 | .2 | 1 | < Repeats after this |
| 0.2 | 2 | 0.4 | 0 | .4 | 0 | |
| 0.4 | 2 | 0.8 | 0 | .8 | 0 | |
| 0.8 | 2 | 1.6 | 1 | .6 | 1 | |
| 0.6 | 2 | 1.2 | 1 | .2 | 1 | |
+-------+-------+--------+---------+----------+--------+----------------------+
1 1 -- (dec) = ---- (bin) 10 1010 0.000110011... ------------- 1010 | 1.0000000000 1010 ------ 01100 1010 ----- 0010000 1010 ----- 01100 1010 ----- 0010