Tarea 3 de Software de Base (2006 Otoño)
Fecha de entrega: 10 de noviembre de 2006 a las 10pm
Una tarea común al escribir un ensamblador es la de trabajar con
números binarios en diferentes formatos. Por ejemplo, un
número binario puede representarse en bytes consecutivos de al
menos cuatro formas distintas según si el primer byte es el
más alto o el más bajo o si el primer bit de cada byte es
el más alto o el más bajo. Por ejemplo, el número
2006 en decimal se puede representar en dos bytes (puesto que es mayor
que 255 pero menor que 65536) como sigue:
- 0000 0111 1101 0110 = 07 d6 si el primer byte es el más alto y el primer bit de cada byte es
el más alto,
- 1101 0110 0000 0111 = d6 07 si el primer byte es el más bajo y el primer bit de cada byte es
el más alto,
- 1110 0000 0110 1011 = e0 6b si el primer byte es el más alto y el primer bit de cada byte es
el más bajo,
- 0110 1011 1110 0000 = 6b e0 si el primer byte es el más bajo y el primer bit de cada byte es
el más bajo.
Además, la representación en complemento a dos del mismo
número también se puede hacer de cualquiera de esas
cuatro formas:
- 1111 1000 0010 1010 = f8 2a si el primer byte es el más alto y el primer bit de cada byte es
el más alto,
- 0010 1010 1111 1000 = 2a f8 si el primer byte es el más bajo y el primer bit de cada byte es
el más alto,
- 0001 1111 0101 0100 = 1f 54 si el primer byte es el más alto y el primer bit de cada byte es
el más bajo,
- 0101 0100 0001 1111 = 54 1f si el primer byte es el más bajo y el primer bit de cada byte es
el más bajo.
Escribe un programa de nombre binario.c,
binario.cpp, binario.java ó binario.f77 que lea un
número decimal N de la entrada estándar (0 <= N < 215)
y que escriba en la salida estándar 16 números
hexadecimales separados por espacios, correspondientes con los ocho
formatos descritos arriba en ese orden. Por ejemplo, si la entrada es 2006 entonces la salida debe
ser 07 d6 d6 07 e0 6b 6b e0 f8
2a 2a f8 1f 54 54 1f.