[C con Clase] Campos de bits

Jorge Luis Betancourt González mayragm en finlay.cmw.sld.cu
Jue Feb 22 10:34:14 CET 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Hola Yudenis:

En este caso la diferencia entre char e int vendría siendo para el
caso en que la cantidad de los campos de bits que estamos utilizando
no fuera suficiente y se necesitara utilizar otro más, por ejemplo en
el caso de la siguiente estructura:

struct mapaBits1 {
    unsigned char bit1:5;
    unsigned char bit2:5;
};

Como son 10 bits y un char es un bye o sea 8 bits se utilizarían en
realidad 16 bits necesarios para almacenarlo, aunque fuera solamente
10 bits los utilizados, así si fuera con un int cabría perfectamente
en uno solo int aunque consumiría en realidad 32 bits que serían los 4
bytes del int (al menos para una arquitectura de 32 bits, mi caso). Es
decir cuando te hacen falta más de 1 char o 1 int entonces es cuando
viene a jugar el tipo de datos (int ó char) pues de ahí depende la
cantidad de bits que se utilizarán en total, si por ejemplo tomas el
siguiente ejemplo:

struct mapaBits2 {
    unsigned char bit1:30;
    unsigned char bit2:4;
};

Cuantos bits consumiría en total? serían aproximadamente 34 bits que
cabrían en 5 (5*8 bits = 40 bits) char's.

struct mapaBits3 {
    unsigned char bit1:30;
    unsigned char bit2:4;
};

En este caso como no cabe en un int que son 32 bits, entonces habría
necesidad de utilizar otro int más que serían 2 int's equivalentes a
64 bits.

Como ves si tiene que ver aunque no de forma directa.

Espero que te sirva,

slds

Yudenis Martínez Abreu escribió:
>
> Hola. Tengo una duda con esto de los campos de bits en el capitulo
> 11;
>
> Entiendo lo de "picar" un entero para guardar números en
> dependencia de su tamaño, pero el de los char no lo entiendo bien,
> alguien podrían ponerme un ejemplo donde se utilice.
>
>
>
> De antemano muchas gracias,
>
> Yudenis.
>
>
>
> -- Este mensaje ha sido analizado por *MailScanner*
> <http://www.mailscanner.info/> en busca de virus y se considera que
> está limpio.
>
> ----------------------------------------------------------------------
>
>
> _______________________________________________ Lista de correo
> Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>  Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

- --
Jorge Luis Betancourt González
E-Mail: betancourt.jorge en gmail.com (home)
        mayragm en finlay.cmw.sld.cu (work/home)
G-Talk: betancourt.jorge en gmail.com (jabber)
Blog:   http://jorgelb.blogeasy.com
Phone:  ++(53)(32)59440
Linux User: 386271
[El conocimiento humano pertenece al mundo]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.4 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
 
iD8DBQFF3WOV/9sG/XUcjyYRAnuYAJ9jek716xY3/AAZDCn79DbuJ7YXbACgkWpS
sz1hlTkxWaeC6RnCuEj7GFQ=
=6u1Q
-----END PGP SIGNATURE-----


-- 
Este mensaje ha sido analizado por MailScanner del Nodo Finlay, Camaguey, Cuba
en busca de virus y se considera que está limpio.





Más información sobre la lista de distribución Cconclase