Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1453 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Tableau de BITs en C ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau de BITs en C ?

n°1529709
cambronne3
Posté le 16-03-2007 à 20:26:52  profilanswer
 

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

mood
Publicité
Posté le 16-03-2007 à 20:26:52  profilanswer
 

n°1529743
Pantoufle_​man
Force tranquille
Posté le 16-03-2007 à 21:51:41  profilanswer
 

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
n°1529786
cambronne3
Posté le 16-03-2007 à 23:42:12  profilanswer
 

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;

n°1529854
Ace17
Posté le 17-03-2007 à 08:22:35  profilanswer
 

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

n°1529871
Taz
bisounours-codeur
Posté le 17-03-2007 à 11:17:04  profilanswer
 

Ace17 a écrit :

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


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

n°1529881
tbp
Posté le 17-03-2007 à 11:54:28  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Tableau de BITs en C ?

 

Sujets relatifs
Réduction d'un tableauProcesseur 32 bits - Qesako
[VBA/Excel]Moduler un Tableau Excelrecuperer le tableau affichage des données de mysql (dans easyphp) ?
Assembleur 16/32 bits (compilateur pour vista)passage tableau à tableau avec boucle for
tableau dynamiqueOperations sur Tableau à 2 dimention
[newbie] Spécifier la taille d'un tableau par une variable ??[CSS/HTML] double couleurs de fond de tableau
Plus de sujets relatifs à : Tableau de BITs en C ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR