[C con Clase] Tema 11 Ejercicio 2 del Curso C++
Steven Davidson
srd4121 en njit.edu
Vie Sep 12 02:35:14 CEST 2008
Hola Samuel,
Arkiant wrote:
> Buenas noches Steven,
> Algo a esto es a lo que se refiere el ejercicio?
>
Veamos.
> struct Fecha
> {
> unsigned char mes:4;//Rango de 0-16 Necesitamos 1-12
> unsigned char dia:5; //Rango de 0-31 Necesitamos justo esa cantidad
> unsigned char anno:7; //Rango de 0-128 Necesitamos tambien justo esa cantidad
> };
>
> por lo que he entendido tengo que crear una estructura de bits,
> concretamente de 16bits hay que digamos proporcionar esos 16bits en
> 3 partes que puedan representar un rango de valores parecido a lo que
> piden:
>
> 1-12 para los meses
> 1-31 para los dias
> 1-128 para los años
>
Casi. Recuerda que los bits no se almacenan de por sí, son agrupados o
bien bajo un 'char', 'short int', o 'int' sin signo. En tu diseño, has
indicado que el límite o alineamiento es de 1 byte; lo que ocupa 'char'.
Esto no es suficiente, necesitamos 16 bits (2 bytes). Por lo tanto,
'char' no nos ayuda. La estructura 'Fecha' ocupará 3 bytes, porque no
cabe los tres campos en un solo 'char'. En memoria, obtendríamos lo
siguiente:
xxxxmmmm xxxddddd xaaaaaaa
x : bits inaccesibles
m : bits de 'mes'
d : bits de 'dia'
a : bits de 'anno'
Como puedes ver, tenemos tres 'char' que viene a ser 3 bytes.
Aconsejo que releas el tema de las estructuras con campos de bits al
igual que el enunciado.
Por cierto, pediría que enviaras tus dudas acerca de los ejercicios del
curso a nuestro apartado de correo-e: ejercicioscpp en conclase.net Esto
es para que los demás seguidores del curso no vean las soluciones de los
mismos ejercicios que posiblemente ellos mismos estén intentando
resolver. Así, no se sienten tentados a copiar o incluso se pueden ver
molestos al ver la solución cuando quieren resolver el problema ellos
mismos.
Espero que lo anterior te ayude.
Steven
Más información sobre la lista de distribución Cconclase