CC51B - Arquitectura de Computadores : Tarea #4
El ZX Spectrum 48K
por Denis Fuenzalida
( Introducción / Lenguaje de Máquina / Interrupciones / Memoria / Canales / Punto Flotante )
Punto Flotante
Cualquier número (excepto 0) puede ser escrito de forma única como + m x 2exp, donde + es el signo, 'm' es la mantisa y está en el rango [1/2 -> 1), 'exp' es el exponente, un numero entero (posiblemente negativo).
Para guardar el número en memoria usamos 5 bytes, como sigue:
(1) Ponemos los primeros 8 bits de la mantisa en el segundo byte (sabemos que el primer bit es 1), los siguientes 8 bits en el tercer byte , los siguientes 8 en el cuarto byte y los ultimos 8 en el quinto byte.
(2) Reemplazamos el primer bit del segundo byte (que sabemos es 1) por el bit de signo: 0 -> nro positivo, 1 ->nro negativo.
(3) Se escribe (exponente + 128) en el primer byte. Por ejemplo, para n = 1 / 10:
1/10 = 4/5x2-3
Con lo que la mantisa 'm' es .11001100110011001100110011001100 en binario (como el 33-avo bit es 1, deberiamos redondear el bit 32-avo de 0 a 1), y el exponente 'e' es 3.
Existe otra forma de notación para los enteros entre -65535 y +65535:
El primer byte es 0.
El segundo byte es 0 para un número positivo, FFh para un número negativo.
Los bytes 3ro y 4to son los bytes de menor y mayor significancia del numero
(o del número +131072 si es negativo).
El quinto byte es 0.