2 votos

¿Cómo entienden los ordenadores los números decimales?

Los ordenadores calculan los números en 0s y 1s. Un bit puede estar en cualquiera de los dos, pero no en el medio. Por lo tanto, si introduces 3/2 en una calculadora, ésta debería devolver 1 o 2, ¿verdad? Pues no. Te da 1,5, la respuesta correcta. Incluso en los problemas más complejos, la calculadora responde con el número correcto. Así que mi pregunta es, ¿cómo funciona todo esto? Si un ordenador sólo puede usar 1s y 0s, ¿cómo es capaz de interpretar correctamente un número entre 1 y 0, y hay una manera de construir un esquema para una máquina que entienda los decimales?

6voto

Spehro Pefhany Puntos 90994

Las calculadoras suelen trabajar en BCD, mientras que en los lenguajes de programación los números (no enteros) suelen representarse en formato binario de coma flotante como IEEE 754 .

En el caso de la coma flotante binaria, hay un número en complemento a 2 normalizado de modo que el bit más significativo es '1' (y como sabemos que es uno, podemos evitar almacenarlo y simplemente asumir que está ahí). El exponente suele ser un número binario sesgado que siempre es positivo.

Hacer una división en BCD no es tan difícil, se puede hacer con una unidad aritmética lógica (ALU) de 4 bits y un algoritmo típico de división larga (que implica un número de restas hasta que el resultado se vuelve negativo, y luego una adición), luego desplazar y repetir.

En cuanto al punto decimal o binario, puedes manejarlo por separado como una especie de exponente.

En lugar de 3/2, piensa en 30000000/20000000 = 15000000, y luego piensa dónde colocar el punto decimal.

Para sumar o restar hay que desplazar a la derecha el número más pequeño para que los exponentes sean iguales primero. Así que 3 + 0,01 de 30000000 + 100000000 -> 30000000 + 01000000 = 30100000 y el decimal se establece para obtener 3.0100000

Podrías cablear la lógica para hacer esto, pero implicaría bastantes ICs de nivel MSI para los registros, la ALU y la lógica de control, normalmente querríamos usar un microcontrolador, un ASIC (como en una calculadora) o una FPGA.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X