Tarea 3 de Software de Base
Trimestre 2007 Primavera
Entrega: 26 de junio de 2007 a las 22:00.
Una tarea común al escribir un ensamblador es la de trabajar con
máscaras de
números binarios. Considere un número binario N de B bits
el cual tiene un campo de C bits el cual debe de llenarse con el valor
de un número binario M llamado máscara. Por ejemplo si B
= 8, C = 5, N = 123 y M = 14 entonces el resultado debe de ser 110 ya
que N = 123 escrito con B = 8 bits es 01111011 y M = 14 escrito
con C = 5 bits es 01110 por lo
que al hacer la máscara se obtiene el número 01101110 que es 110 en decimal (los B-C
primeros bits se
quedan igual, los C últimos
bits se cambian).
Escriba un programa de nombre mascaraZZ.c,
mascaraZZ.cpp, mascaraZZ.java o mascaraZZ.f77 que lea de la
entrada estándar cuatro números B, C, N, M separados por
un
espacio. Su programa
debe de escribir en la salida estándar el resultado de hacer la
máscara.
Como ejemplo, si su programa recibe la entrada 8 5 123 14 entonces deberá
producir como salida 110.
Puede suponer que 1 <= C <= B <= 64, que 0 <= N < 2B
y 0 <= M < 2C. Utilice el tipo unsigned long long int de gcc y g++ o un tipo equivalente en
los demás lenguajes. Parte de la tarea es averiguar como se leen
y escriben números de ese tipo en su lenguaje favorito.