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

  FORUM HardWare.fr
  Programmation
  C++

  Bits

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Bits

n°938518
Z3RgSp4wN
Posté le 05-01-2005 à 21:48:19  profilanswer
 

Bonjour ! J'aimerai savoir comment l'on definie une variable sur un nombre de bit spécifique par exemple pour créer une variable de type bool sur 1 bit et non sur 1 octet. Pour ensuite pouvoir passer en paramètre d'une fonction une combinaison de constante avec l'opérateur '|'.
Merci

mood
Publicité
Posté le 05-01-2005 à 21:48:19  profilanswer
 

n°938544
Z3RgSp4wN
Posté le 05-01-2005 à 22:01:57  profilanswer
 

J'ai vu que l'on pouvait le faire mais je ne sais plus comment !? kelkun pourrait m'aider svp ?

n°938562
chrisbk
-
Posté le 05-01-2005 à 22:13:05  profilanswer
 

bof, la feinte habituelle, c'est le coup de l'enum :
 

Code :
  1. enum roger {
  2. COLONEL_MOUTARDE = 1,
  3. SALON = 2,
  4. CHANDELIER = 4
  5. };
  6. mafonction(COLONEL_MOUTARDE | SALON | CHANDELIER);


 
 
 
 
 

n°938673
HelloWorld
Salut tout le monde!
Posté le 06-01-2005 à 00:01:11  profilanswer
 

La plus petite unité adressable c'est l'octet, donc tu ne peux pas créer une seule variable inférieure à cette taille. Tu peux grouper plusieurs bool dans un même octet...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°938685
Taz
bisounours-codeur
Posté le 06-01-2005 à 00:21:29  profilanswer
 

HelloWorld a écrit :

La plus petite unité adressable c'est l'char, donc tu ne peux pas créer une seule variable inférieure à cette taille. Tu peux grouper plusieurs booléens dans un même octet grâce aux champs de bits


n°938805
HelloWorld
Salut tout le monde!
Posté le 06-01-2005 à 09:44:25  profilanswer
 

Moi je me situais d'un point de vue archi x86.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°938841
yulara
Byte Hunter
Posté le 06-01-2005 à 10:24:21  profilanswer
 

la taille mini c'est l'octet mais tu peux declarer un champ de Bits dans cet octet. d'ailleur generalement (enfin pour la gestion d'un registre par exemple), on declare les champs de bits dans une union pour acceder soit aux bits, soit à l'octet complet.

Code :
  1. typedef struct ChampDeBits
  2. {
  3.    char Bit0 : 1;  // Bit0 déclaré sur 1 bits
  4.    char Toto : 3;  // Toto déclaré sur 3 bits
  5.    // etc
  6. };


---------------
Quizz'n'Blind pour tester vos connaissances
n°939359
Z3RgSp4wN
Posté le 06-01-2005 à 16:17:15  profilanswer
 

Merci les gens ! =)
Parcontre un truc que je n'est jamais compris :
A quoi sert le typedef devant une structure ?

n°939376
HelloWorld
Salut tout le monde!
Posté le 06-01-2005 à 16:21:07  profilanswer
 

En C++ à rien, en C à éviter de mettre struct tout le temps (sauf que là il s'est trompé c'est à la fin le nom du typedef).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°939380
Z3RgSp4wN
Posté le 06-01-2005 à 16:25:21  profilanswer
 

Merci c'est bien ce que je me disais ! ^^
Moi je dis quel interet de garder le language C
puisque le C++ existe et que celui-ci est plus élaboré
Je sais que ces 2 language son different mais pas tant que ça

mood
Publicité
Posté le 06-01-2005 à 16:25:21  profilanswer
 

n°939391
Z3RgSp4wN
Posté le 06-01-2005 à 16:29:32  profilanswer
 

Le mot 'union' permet de créer des champs de bits mais ceux-ci sont il stocké sur 1 octet ? Et pourquoi peut-on seulement se servir de un seul champs ?

n°939392
chrisbk
-
Posté le 06-01-2005 à 16:30:24  profilanswer
 

union n'a rien a voir avec toussa

n°939394
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-01-2005 à 16:31:10  profilanswer
 

HelloWorld a écrit :

En C++ à rien


 
Même pas pour créer un nouveau type ?  
typedef std::vector<int> IntVector;
comment on fait ça sans typedef ?
(à moins que ton "à rien" ne concerne que les structures ?)


Message édité par antp le 06-01-2005 à 16:31:34

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°939397
chrisbk
-
Posté le 06-01-2005 à 16:31:52  profilanswer
 

antp a écrit :

Même pas pour créer un nouveau type ?  
typedef std::vector<int> IntVector;
comment on fait ça sans typedef ?
(à moins que ton "à rien" ne concerne que les structures ?)


 
 
LISEZ LA QUESTION §§§§


#################################################
# A quoi sert le typedef devant une structure ? #
#################################################


Message édité par chrisbk le 06-01-2005 à 16:32:10
n°939399
Rits75
to?be:!be
Posté le 06-01-2005 à 16:33:30  profilanswer
 

il parlait d'un typedef devant un struct!!!


Message édité par Rits75 le 06-01-2005 à 16:33:54
n°939401
yulara
Byte Hunter
Posté le 06-01-2005 à 16:34:10  profilanswer
 

HelloWorld a écrit :

En C++ à rien, en C à éviter de mettre struct tout le temps (sauf que là il s'est trompé c'est à la fin le nom du typedef).


les 2 ecritures sont equivalentes non?
sauf que mettre le nom en premier te permet de declarer une variable de ce type directement.  
enfin je crois... ou alors j'utilise des compilos tres genereux (ce qui serait pas supprenant outre mesure...)
 
 


---------------
Quizz'n'Blind pour tester vos connaissances
n°939404
Z3RgSp4wN
Posté le 06-01-2005 à 16:35:13  profilanswer
 

je parle pu du typedef la ! o_O
=(

n°939406
Z3RgSp4wN
Posté le 06-01-2005 à 16:37:14  profilanswer
 

je parle de union et de ces champs de bits dans quel cas il sert et pk un acces limiter sur les champs (utilisation d'un seul champ a la fois qui engeandre la destruction des autre champs)

n°939408
yulara
Byte Hunter
Posté le 06-01-2005 à 16:37:20  profilanswer
 

Z3RgSp4wN a écrit :

Le mot 'union' permet de créer des champs de bits mais ceux-ci sont il stocké sur 1 octet ? Et pourquoi peut-on seulement se servir de un seul champs ?


non ce n'est pas l'union qui te permet de creer un champ de bit mais une structure.
l'union entre cette structure et un byte, peut te permettre de gerer soit bit par bit, soit l'octet complet (d'ou son utilisation pour les registres: tu lis un flag du registre mais tu reset le registre complet)


---------------
Quizz'n'Blind pour tester vos connaissances
n°939459
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-01-2005 à 17:17:30  profilanswer
 

Rits75 a écrit :

il parlait d'un typedef devant un struct!!!


 
oui bon après coup j'ai édité :o
 

chrisbk a écrit :

LISEZ LA QUESTION §§§§


 
lisez l'edit :o


Message édité par antp le 06-01-2005 à 17:17:40

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°939475
HelloWorld
Salut tout le monde!
Posté le 06-01-2005 à 17:30:59  profilanswer
 

antp a écrit :

lisez l'edit :o


Citation :

Champion des excuses bidons


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°939485
chrisbk
-
Posté le 06-01-2005 à 17:38:40  profilanswer
 

antp a écrit :


lisez l'edit :o


 
 
trop fort l'edit :o


(à moins que ton "à rien" ne concerne que les structures ?)


 
bin la réponse est la meme : LISEZ LA QUESTION §§§

n°939512
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-01-2005 à 17:59:18  profilanswer
 

chrisbk a écrit :

trop fort l'edit :o


 
cf message de HelloWorld [:spamafote]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°939513
Z3RgSp4wN
Posté le 06-01-2005 à 18:00:36  profilanswer
 

Argh ça sort du contexte !

n°939515
yulara
Byte Hunter
Posté le 06-01-2005 à 18:02:24  profilanswer
 

Z3RgSp4wN a écrit :

je parle de union et de ces champs de bits dans quel cas il sert et pk un acces limiter sur les champs (utilisation d'un seul champ a la fois qui engeandre la destruction des autre champs)


je suis pas sure de comprendre ce que tu veux dire... en particulier la parenthese...
 
sur un processeur classique, style x86, l'allocation minimum est un octet (tu dois pouvoir trouver des proc qui gere des bits mais plutot coté DSP ou FPGA).
ça ne signifie pas qu'un champ de bits a une taille maximum de 1 octet. il a la taille que tu souhaites.
le champ de bits n'est qu'une ecriture facilitant l'acces à un ou plusieurs bits d'un espace memoire.
 
exemple d'une date codée sur 4 octets:

Code :
  1. typedef struct sCalendar
  2. {
  3.  unsigned char minute : 6;
  4.  unsigned char hour : 5;
  5.  unsigned char date : 5;
  6.  unsigned char month : 4;
  7.  unsigned char year : 8;
  8.  unsigned char dayofweek : 4;
  9. };
  10. typedef union uHorloge_Bdd
  11. {
  12.  unsigned long Bdd_Format;
  13.  sCalendar  BitField;
  14. };


 
utilisation de cette date:

Code :
  1. uHorloge_Bdd  time;
  2. printf("Valeur de la Date en memoire:%ld\n", time.Bdd_Format);
  3. printf("Valeur de l'année:%d\n", time.BitField.year);


 
 


---------------
Quizz'n'Blind pour tester vos connaissances
n°939520
Z3RgSp4wN
Posté le 06-01-2005 à 18:09:27  profilanswer
 

Quest ce que ça fait si on affecte un nb tro grand par ex à minute : 6;
?  
Merci de t explication yulara  

n°939523
yulara
Byte Hunter
Posté le 06-01-2005 à 18:12:10  profilanswer
 

hum bonne question...
je dirais que comme tu déclares minute en char, l'overflow doit etre 256 et non 64... donc il ecraserait bien les 2 premiers bits de hour...
mais pas sure, j'ai jamais été confrontée à ce cas...


Message édité par yulara le 06-01-2005 à 18:12:32

---------------
Quizz'n'Blind pour tester vos connaissances
n°939532
Z3RgSp4wN
Posté le 06-01-2005 à 18:19:35  profilanswer
 

Ouai bref si on programme bien son programme il ne doit pas y avoir de pb d'overflow. Merci

n°939534
yulara
Byte Hunter
Posté le 06-01-2005 à 18:22:31  profilanswer
 

ah bah j'ai tout faux (mais bon vu que ça arrive souvent, c'est pas surprenant :p)
 
minute aura bien un overflow de 64.
cf http://www.ann.jussieu.fr/courscpp [...] 06-G1.html


---------------
Quizz'n'Blind pour tester vos connaissances
n°939538
Z3RgSp4wN
Posté le 06-01-2005 à 18:26:18  profilanswer
 

^^ ta ptetre tjrs faut mais moi je ne sais jamais rien !
Merci pour le lien

n°939577
Taz
bisounours-codeur
Posté le 06-01-2005 à 19:00:42  profilanswer
 

je me suis toujours demandé si mon compilateur avait légalement le droit de me tacler à la gorge lorsque je fais
 
mon_union.ici = truc;
machin = mon_union.la;
 
je pense que oui, faudrait que je sorte mon bouquin

n°939587
++fab
victime du syndrome IH
Posté le 06-01-2005 à 19:11:43  profilanswer
 

oui, ton compilateur regarde s'il existe une instance d'eric Di méco ou de William Prunier, et appelle le plus proche pour un tacle à la bolognaise les 2 pieds décollés ! :)

mood
Publicité
Posté le   profilanswer
 


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

  Bits

 

Sujets relatifs
[C] gerer des champs de bits[C++] representer un nombre 64 bits
Quel debuggeur 16 bits marchant sous dos ?Oracle 8i: Driver ODBC 16 bits pour Windows 2000
Comment inverser les bits d'un octet ?Lire la valeur de la couleur d'un pixel en 800*600 en 32 bits ?
conversion en bitsconversion des décimaux en bits
[RESOLU]Convertir un entier en HEXA sur un nombre de bits[PHP] Conversion fichier .tif en .png 24 bits
Plus de sujets relatifs à : Bits


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)