[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