Representación posicional de fracciones

Una necesidad importante en la representación de cantidades numéricas en la computadora, corresponde al uso de las fracciones. La representación de las fracciones en la computadora se hace a través del punto binario.

De manera similar al sistema decimal cuando utilizamos el punto decimal, las cifras que aparecen inmediatamente a la izquierda del punto utilizan potencias negativas y van disminuyen de uno en uno, por ejemplo 0.71875 se compondría con las siguientes partes de 7 décimos: $\tfrac{7}{10} = 7 \times 10^{-1}$, $1$ centésimo $\tfrac{1}{100} = 1 \times 10^{-2}$, $8$ milesimos $\tfrac{8}{1000} = 8 \times 10^{-3}$, $7$ diezmilésimos $\tfrac{7}{10000} = 7 \times 10^{-4}$ y 5 cienmilésimos $\tfrac{7}{10000} = 7 \times 10^{-4}$, en potencias negativas de la base. Así se interpretaría de la cantidad fraccionaria a su equivalente en decimal:

tabla

Para el caso de un número en binario:

tabla

Para el caso de un número en hexadecimal:

tabla

El proceso contrario, que consiste en obtener la parte fraccionaria de una cantidad en decimal en otra potencia, es el proceso contrario al que usábamos, en las conversiones anteriores. Si analizamos la conversión de decimal, correspondería a ir moviendo las cifras a la izquierda del punto decimal y esto se logra multiplicando por 10, por la base.

Así, este proceso se reduce a:

  1. La cantidad fraccionaria (decimales después del punto) se multiplican por la base deseada.
  2. La parte entera se coloca a la derecha del punto o de la última cifra obtenida.
  3. Se repite el proceso sólo con la parte fraccionaria.

Ejemplo: “convertir” 0.71875 de base 10 a decimal:

tabla
  1. A partir de la parte fraccionaria original
    0.71875
  2. Recorre el punto decimal de la parte fraccionaria (0.71875) multiplicando por la base (10).

    0.71875 x 10 = 7.1875

    7 será el dígito después del punto y 0.1875 la parte fraccionaria.

  3. Repite: Recorre el punto decimal de la parte fraccionaria (0.1875) multiplicando por la base (10).

    0.1875 x 10 = 1.875

    1 será el dígito después del punto y 0.875 la parte fraccionaria.

  4. Repite: Recorre el punto decimal de la parte fraccionaria (0.875) multiplicando por la base (10).

    0.875 x 10 = 8.75

    8 será el dígito después del punto y 0.75 la parte fraccionaria.

  5. Repite: Recorre el punto decimal de la parte fraccionaria (0.75) multiplicando por la base (10).

    0.75 x 10 = 7.5

    7 será el dígito después del punto y 0.5 la parte fraccionaria.

  6. Repite: Recorre el punto decimal de la parte fraccionaria (0.5) multiplicando por la base (10).

    0.5 x 10 = 5.0

    5 será el dígito después del punto y 0.0 la parte fraccionaria.

  7. Repite: Recorre el punto decimal de la parte fraccionaria (0) multiplicando por la base (10).

    El procedimiento se detiene cuando la parte fraccionaria es 0 o bien hasta un número de dígitos proporcionados por el problema.

  8. Escribir las cantidades después del punto decimal en el orden que se obtuvieron.

    0.71875

Escribir
Con los siguientes ejercicios verificarás si aprendiste el procedimiento para obtener la representación en otra base de la parte fraccionaria de una cantidad decimal.

Escribe la respuesta correcta en los espacios que corresponden para completar el procedimiento:

Ejercicio 1

Obtener la representación en binario de $0.71875_{10}$:

Es necesario que escribas las respuestas para recibir retroalimentación.
  1. A partir de la parte fraccionaria original
    0.71875
  2. Multiplica la parte fraccionaria (0.71875) multiplicando por la base destino (2).

    0.71875 x 2 = 1.4375

    1 será el dígito después del punto y 0.4375 la parte fraccionaria.

  3. Repite: Multiplica la parte fraccionaria (0.4375) multiplicando por la base destino (2)

    0.4375 x 2 = 0.875

    0 será el siguiente dígito y 0.875 la parte fraccionaria.

  4. Repite: Multiplica la parte fraccionaria (0.875) multiplicando por la base destino (2)

    0.875 x 2 = 1.75

    1 será el siguiente dígito y 0.75 la parte fraccionaria.

  5. Repite: Multiplica la parte fraccionaria (0.75) multiplicando por la base destino (2)

    0.75 x 2 = 1.5

    1 será el siguiente dígito y 0.5 la parte fraccionaria.

  6. Repite: Multiplica la parte fraccionaria (0.5) multiplicando por la base destino (2)

    0.5 x 2 = 1.0

    1 será el siguiente dígito y 0.0 la parte fraccionaria.

  7. Repite: Recorre el punto decimal de la parte fraccionaria (0) multiplicando por la base destino (2)

    El procedimiento se detiene porque la parte fraccionaria es cero

  8. Escribir las cantidades después del punto decimal en el orden que se obtuvieron.

    $0.71875_{10}=0.$ 101112

Ejercicio 2

Obtener la representación en hexadecimal de $0.71875_{10}$:

  1. A partir de la parte fraccionaria original
    0.71875
  2. Multiplica la parte fraccionaria (0.71875) multiplicando por la base destino (16).

    0.71875 x 16 = 11.5

    11 será el siguiente dígito después del punto, recuerda que equivale a la letra B en el sistema hexadecimal y 0.5 la parte fraccionaria.

  3. Repite: Multiplica la parte fraccionaria (0.5) multiplicando por la base destino (16)

    0.5x16=8.0

    8 será el siguiente dígito y 0.0 la parte fraccionaria.

  4. Repite: Recorre el punto decimal de la parte fraccionaria (0) multiplicando por la base destino (16)

    El procedimiento se detiene porque la parte fraccionaria es cero

  5. Escribir las cantidades después del punto decimal en el orden que se obtuvieron.

    $0.71875_{10}=0.$ B816

Ejercicio 3

Obtener la representación en base $16$ de $0.33_{10}$. Si no consigue una representación finita, utilice sólo 8 dígitos hexadecimales.

  1. A partir de la parte fraccionaria original
    0.33
  2. Multiplica la parte fraccionaria (0.33) multiplicando por la base destino (16).

    0.33 x 16 = 5.28

    5 será el dígito después del punto y 0.28 la parte fraccionaria.

  3. Repite: Multiplica la parte fraccionaria (0.28) multiplicando por la base destino (16)

    0.28 x 16 = 4.48

    4 será el siguiente dígito y 0.48 la parte fraccionaria.

  4. Repite: Multiplica la parte fraccionaria (0.48) multiplicando por la base destino (16)

    0.48 x 16= 7.68

    7 será el siguiente dígito y 0.68 la parte fraccionaria.

  5. Repite: Multiplica la parte fraccionaria (0.68) multiplicando por la base destino (16)

    0.68 x 16 = 10.88

    A será el siguiente dígito (que corresponde a 10) y 0.88 la parte fraccionaria.

  6. Repite: Multiplica la parte fraccionaria (0.88) multiplicando por la base destino (16)

    0.88 x 16 = 14.08

    E será el siguiente dígito (que corresponde a 14) 0.08 la parte fraccionaria.

  7. Repite: Multiplica la parte fraccionaria (0.08) multiplicando por la base destino (16)

    0.88 x 16 = 1.28

    1 será el siguiente dígito (que corresponde a 14) y 0.28 la parte fraccionaria.

  8. Repite: Recorre el punto decimal de la parte fraccionaria (0.28) multiplicando por la base destino (16)

    El procedimiento se detiene porque se observa un patrón repetitivo 474AE1.

  9. Escribir las cantidades después del punto decimal en el orden que se obtuvieron.

    $0.71875_{10}=0.$ 547AE14716

Cuando se interrumpe el proceso a un cierto número de dígitos, el resultado no será exacto, será menor al planteado originalmente. En este caso llegamos a 0.329999999841675, bastante parecido a 0.33 pero no exactamente. En este caso tienes 8 dígitos hexadecimales, que corresponden a 8x4= 32 bits, bastante aproximado. En Excel puedes obtener este valor utilizando la fórmula: =HEX.A.DEC("547AE147")*(16^-8) y ajustando a 16 decimales.

Tipos de datos

Cuando hablamos de representaciones de los números y su almacenamiento en la memoria de las computadoras, hay que definir el tamaño que ocuparán, por lo tanto tendrán un número finito de dígitos (binarios, bits) para su representación. Una mayor precisión requerirá mayor capacidad de procesamiento y circuitos más complejos para su implementación.

Los números reales estarían representados por cierta cantidad de bits, que le darían una precisión y un acercamiento a la representación en decimal que conocemos de los números. Mientras mayor cantidad de bits se tengan de precisión, mayor será la cantidad de números que puedan representarse y menor el error o diferencia entre la representación decimal o fraccionaria.

No existen números irracionales en las computadoras, ya que siempre habrá una cantidad finita de números. Recuerda cuando las cifras decimales se repetían en series infinitas o con los números irracionales, muchas representaciones en binario no serán racionales, pero no podrán ser infinitas, ya que para la computadora tienen que guardarse en espacios finitos, generalmente en múltiplos de 8 bits (byte, word, double word, quad-word, 128 bits, 256 bits, …)

En el siguiente diagrama se acomodaron los tipos de datos de punto flotante y enteros. Algunos lenguajes de programación hacen una diferenciación entre tipos de datos entre enteros con signo (signed) y sin signo (unsigned); aunque la tendencia es implementar números con signo en todos los casos.

tabla

Los números o tipos de dato que aparecen en azul, corresponden a los enteros y los que están en rojo a los de punto flotante, que corresponderían a los reales. Las intersecciones de los conjuntos se colocaron en función de que la precisión de una representación de punto flotante pueda contener a todos los números representados por el tipo de dato entero sin pérdida de precisión de acuerdo al estándar IEEE 754.

El término “palabra” (word) corresponde a la arquitectura de las computadoras, aunque actualmente se reconoce como el valor de la arquitectura del procesador y del sistema operativo, en 2020 el más común es de 64 bits.