Tableau de BITs en C ?

Tableau de BITs en C ? - C - Programmation

Marsh Posté le 16-03-2007 à 20:26:52    

Salut,
 
Je suis nouveau dans le C, et je n'ai pas vu de type Booléen, ça commence à int, pour 1 octet.
J'ai à manipuler de grandes quantités de BIT, et je souhaiterai déclarer un tableau de bit, pour des raisons de place, comment fait-on ?
 
Merci d'avance

Reply

Marsh Posté le 16-03-2007 à 20:26:52   

Reply

Marsh Posté le 16-03-2007 à 21:51:41    

cambronne3 a écrit :

Salut,

 

Je suis nouveau dans le C, et je n'ai pas vu de type Booléen, ça commence à int, pour 1 octet.
J'ai à manipuler de grandes quantités de BIT, et je souhaiterai déclarer un tableau de bit, pour des raisons de place, comment fait-on ?

 

Merci d'avance

 

un int fait 16 bits, l'octet c'est le type char.

 

si tu veux packer un max de bits dans un minimum de place, il faut masquer. C'est un peu compliqué mais faisable.
tu prends un entier de la taille que tu veux, 8bit, 16bit, 32bit ou 64bit, et tu travailles sur chaque bits

 

Exemple

Code :
  1. char mask=0xF2;/*8bit*/
  2. int n;
  3. /*tester le deuxieme bit pour savoir si il est a 1*/
  4. if( (mask & 0x02) != 0)
  5. { /*fais des trucs*/ }
  6. /*alternative pour tester le n-ième bit*/
  7. n=1;/*2ieme bit*/
  8. if( (mask & (1<<n)) !=0)
  9. {}
  10. /*mettre le n-ieme bit a 1*/
  11. mask = mask | (1<<n);
  12. /*ecriture alternative*/
  13. mask |= 1<<n;
  14. /*mettre le n-ieme bit a 0*/
  15. mask = mask & ~(1<<n);
  16. /*ecriture alternative*/
  17. mask &= ~(1<<n);
 


Message édité par Pantoufle_man le 16-03-2007 à 21:52:20
Reply

Marsh Posté le 16-03-2007 à 23:42:12    

Merci de ta réponse.
Entre temps, j'ai trouvé qu'en fait on pouvait manipuler les Bits grace à:
 
 

Code :
  1. #include <stdbool.h>
  2. bool un_bit;

Reply

Marsh Posté le 17-03-2007 à 08:22:35    

Faux. Ton "un_bit" sera stocke sur un octet, minimum.  

Reply

Marsh Posté le 17-03-2007 à 11:17:04    

Ace17 a écrit :

Faux. Ton "un_bit" sera stocke sur un octet, minimum.


faux aussi. y a pas de notion d'octet en C

Reply

Marsh Posté le 17-03-2007 à 11:54:28    

Tout ce qu'on peut dire à priori c'est qu'il y a différents types observants long >= int >= short >= char et que char comporte CHAR_BITS bits :)
 
Tous les opérateurs bit-à-bit s'appliquent à ces entiers. Reste à trouver quel est le contenant le plus efficace pour de tels opérations sur une plateforme donnée si le besoin est.
Note: sur les x86 modernes manipuler moins de 32bits à la fois amène à des problèmes de dépendance partielle; les compilateurs sont au courant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed