1/10(decimal) = 0.0001100110011... (binary)
¿Cómo se convierte una fracción a binaria?
¿Cómo puedo hacer eso? ¿Se supone que debo convertir a binario y luego dividir? ¿Podría alguien mostrarme?
1/10(decimal) = 0.0001100110011... (binary)
¿Cómo se convierte una fracción a binaria?
¿Cómo puedo hacer eso? ¿Se supone que debo convertir a binario y luego dividir? ¿Podría alguien mostrarme?
En la universidad aprendí de esta manera:
:
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.
¿Dónde obtienes '0.1',' 0.2', '0.4',' 0.8', '0.6', etc.? – Strawberry
De la fila anterior, es el resultado. La primera fila toma la entrada (en el caso de este ejemplo, 0.1). Solo sigue las instrucciones. – Femaref
Gracias Fermaref! – Strawberry
Esto puede ser algo confuso, pero las posiciones decimales en binario representarían recíprocos de potencias de dos (por ejemplo, 1/2, 1/4, 1/8, 1/16, para el primero, segundo, tercero 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á averiguar qué recíprocos de potencias de dos necesitarían agregarse para agregar hasta 1/10. Por ejemplo:
1/16 + 1/32 = 0.09375, que está muy 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. Entonces:
0.00011001 binary = 0.09765625 decimal, que está cerca de lo que usted pidió.
Puede seguir añadiendo más y más dígitos, por lo que la respuesta sería 0.00011001 ...
1 1 -- (dec) = ---- (bin) 10 1010 0.000110011... ------------- 1010 | 1.0000000000 1010 ------ 01100 1010 ----- 0010000 1010 ----- 01100 1010 ----- 0010
La división larga en realidad muestra por qué funciona el algoritmo en la respuesta aceptada. –
Aquí es cómo pensar del método.
Cada vez que multiplique por 2, está cambiando 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.
Convirtiendo la base de un número entero dividiendo y tomando el resto como el siguiente 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 se señala en 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).
Excelente. La respuesta de Femaref parece mágica sin esta explicación. –
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 es igual a 0.1
a binario. Comience con 0.1
como su entrada y siga estos pasos:
En este caso 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 | |
+-------+-------+--------+---------+----------+--------+----------------------+
Se puede ampliar lo que quiere decir con "binario"? "Convertir a binario" realmente no tiene sentido. ¿Estás tratando de convertir el resultado de una operación de división a un número de coma flotante? –
@Michael Petrotta: creo que quiere decir cómo se expresa una fracción en la base 2 como un decimal (posiblemente repetitivo). – templatetypedef
http://kakopa.com/convert2binary.htm – QuantumKarl