[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] Re: Manipuler un bit en c



oui, enfin, la manipulation de bit se fait la plupart du temps avec
des operations logiques et un masque. exmple:

uint8_t a = 1; ( bin= 0000 0001)

uint8_t b = a | 0x10; (bin 0000 0001 OR 0001 0000 = 0001 0001)

Dont, tu applique un masque avec OR pour setter un bit, et un AND pour
clearer un bit (tu AND avec 0 dans le masque).

JeF

On Wed, Mar 13, 2002 at 12:55:09AM +0100, Benoit Joseph wrote:
> 
> Tu dois définir des structures avec des champs de bits. genre
> 
> struct One_by_One {
> 	a:1;
> 	b:1;
> 	c:1;
> 	d:1;
> 	e:1;
> 	f:1;
> 	g:1;
> 	h:1;
> };
> 
> struct Octet {
> 	octet:8;
> }
> 
> Si tu veux faire référence parfois à l'un parfois à l'autre, il faut que
> tu fasse une union de ces deux structures.
> 
> union {
> 	struct Octet o;
> 	struct One_by_One b;
> } plok;
> 
> un appel au premier bit serait plok.b.a
> 	
> ou quelque chose dans le goût enfin... Tu peux aussi jouer avec des
> typedef pour faire joli...
> 
> A+
> 
> Benoit
> 
> PS: je ne garantis pas la syntaxe, mais l'idée y est. ;-)
> 
> On Wed, Mar 13, 2002 at 12:34:36AM, Benoît Barbier wrote:
> > Bonjour,
> > 
> > Désolé pour le hors-sujet.
> > Je voudrais savoir comment on peut manipuler un bit particulier d'un octet en c
> > Par ex. :
> > int test=0;
> >    //Positionner le 3ème bit de poids faible à 1
> >  printf ("\n\nLa val du nb : %d après inversion du 3eme bit \n\n", test);
> > //Et il m'afficherait 4.
> > Ce serait pour faire des catégories par ex.
> > Un peut comme les droits d'accès sous linux un bit pour (en partant du poids faible) : 
> > l'exécution, l'écriture, la lecture.
> > Y a-t-il moyen?
> > Comment fait-on?
> > 
> > Merci d'avance
> > Benoît
> > 
> > 
> > 
> > _______________________________________________
> > Linux Mailing List
> > Archives: http://unixtech.be/mailman/listinfo/linux
> ---end quoted text---
> 
> -- 
> 
> Benoit JOSEPH 
> Manex SPRL: benoit.joseph@manex.be
> Perso: joker@baby-linux.net
>        benoit.joseph@teledisnet.be



-- 
-> Jean-Francois Dive
--> jef@linuxbe.org

Attachment: pgp01003.pgp
Description: PGP signature