Enunciado
Se tiene la siguiente secuencia de caracteres EBCDIC que representa
una cadena de 4 empaquetados de 2 bytes de longitud (sin superposiciones)
j % a # p ? d )
Resolucion
A) Indicar cuáles son los números almacenados en base 10 en cada empaquetado.
I) Reviso la tabla EBCDIC para obtener los 4 empaquetados de 2 bytes
j % a # p ? d )
916C 817B 976F 845D
2 bytes 2 bytes 2 bytes 2 bytes
vemos que los 4 empaquetados son válidos
II) Busco los numeros de cada empaquetado
916C|16 ... |10 = +916|10
817B|16 ... |10 = -817|10
976F|16 ... |10 = +976|10
845D|16 ... |10 = -845|10
B) Tomar el valor A como los últimos tres dígitos del número de padrón (ej.: Padrón 9876510 => A = 510) y restarle el valor del primer empaquetado en formato BPF c/signo de 16 bits indicando la validez del resultado. Nota: Escriba CLARAMENTE su número de Padrón.
A = lo tomo como lo que tiene la resolucion
A = +625|10
I) Paso A a binario que es la base de trabajo del BPF c/s 16 bits
625|10 .. |16 lo paso a una base pivote (|16) usando divisiones sucesivas
271|16 .. |2 usando la propiedad de la raiz
16 = 2^x con x = 4
2 7 1 |16
0010 0111 0001 |2 BPF c/signo de 16 bits
II) Completo los bits faltantes para llegar a 16 bits que necesita A
0000 0010 0111 0001|2 BPF c/signo de 16 bits
como es positivo no tengo que hace mas nada y nos queda asi
III) Paso B = primer empaquetado a binario que es la base de trabajo
del BPF c/s 16 bits
916|10 .. |16 lo paso a una base pivote (|16) usando divisiones sucesivas
394|16 .. |2 usando la propiedad de la raiz
16 = 2^x con x = 4
3 9 4 |16
0011 1001 0100 |2 BPF c/signo de 16 bits
IV) Completo los bits faltantes para llegar a 16 bits que necesita B
0000 0011 1001 0100|2 BPF c/signo de 16 bits
V) Hago la resta que me piden
A-B = A + Bcomp
busco Bcomp
00 Acarreos
1111 1100 0110 1011|2
+ 1
--------------------
1111 1100 0110 1100|2 valida pues ultimos acarreos iguales
Hago A + Bcomp
00 Acarreos
0000 0010 0111 0001|2
+
1111 1100 0110 1100|2
--------------------
1111 1110 1101 1101|2 valido, pues los ultimos acarreos son iguales
C) Tomar el valor resultado del punto anterior y almacenarlo en formato BPFlotante IEEE 754 de precisión simple expresando su configuración octal.
1111 1110 1101 1101|2 BPF c/s 16 bits
I) Veo el signo
signo = - pues primer bit 1
Como el Resultado de la resta dio negativo,
Hallo complemento para obtener valor absoluto
II) Hago el complemento para obtener valor absoluto
00 Acarreos
0000 0001 0010 0010|2
+ 1
--------------------
0000 0001 0010 0011|2 valida pues ultimos acarreos iguales
III) Escribo el numero en notación cientifica
exp = +8 (positivo pues corri la coma a la izq 8 lugares)
1,0010 0011 * 2^(exp|10)
1,0010 0011 * 2^(8|10)
IV) Busco el EEX(exponente en exceso)
EEX = 127|10 + exp
EEX = 127|10 + 8|10
EEX = 135|10
paso el EEX de base 10 a 2
135|10 ... |16 (lo paso a una base pivote usando divisiones sucesivas)
8E|16 .... |2 usando la propiedad de la raiz
16 = 2^x con x = 4
8 7|16
1000 0111|2 que tiene los 8 bits pedidos por el formato
V) Normalizo la mantisa
1,00100011|2
considerando que el primer digito no se almacena, y que debe tener
23 bits completo los 0 a la derecha que hagan falta
m = 00100011 000000000000000 23 bits
VI) Almaceno el numero
1 10001110 00100011000000000000000|2
signo EEX Mantisa normalizada
1 bit 8 bits 23 bits
nos queda
1 1000 0111 00100011000000000000000|2 BPFlotante IEEE 754 de precision
simple
VII) Paso la config binaria BPFlotante IEEE 754 de precision simple a
octal que es la que me piden
1 10000111 00100011000000000000000|2 ... |8
8 = 2^x con x = 3
011 000 011 100 100 011 000 000 000 000 000|2 BPF c/signo de 16 bits
3 0 3 4 4 3 0 0 0 0 0 |8
obtenemos la conf octal de BPF c/signo de 16 bits
30344300000|8