Bits - C++ - Programmation
Marsh Posté le 05-01-2005 à 22:01:57
J'ai vu que l'on pouvait le faire mais je ne sais plus comment !? kelkun pourrait m'aider svp ?
Marsh Posté le 05-01-2005 à 22:13:05
bof, la feinte habituelle, c'est le coup de l'enum :
Code :
|
Marsh Posté le 06-01-2005 à 00:01:11
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...
Marsh Posté le 06-01-2005 à 00:21:29
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 |
Marsh Posté le 06-01-2005 à 09:44:25
ReplyMarsh Posté le 06-01-2005 à 10:24:21
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 :
|
Marsh Posté le 06-01-2005 à 16:17:15
Merci les gens ! =)
Parcontre un truc que je n'est jamais compris :
A quoi sert le typedef devant une structure ?
Marsh Posté le 06-01-2005 à 16:21:07
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).
Marsh Posté le 06-01-2005 à 16:25:21
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
Marsh Posté le 06-01-2005 à 16:29:32
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 ?
Marsh Posté le 06-01-2005 à 16:31:10
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 ?)
Marsh Posté le 06-01-2005 à 16:31:52
antp a écrit : Même pas pour créer un nouveau type ? |
LISEZ LA QUESTION §§§§
|
Marsh Posté le 06-01-2005 à 16:33:30
il parlait d'un typedef devant un struct!!!
Marsh Posté le 06-01-2005 à 16:34:10
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...)
Marsh Posté le 06-01-2005 à 16:37:14
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)
Marsh Posté le 06-01-2005 à 16:37:20
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)
Marsh Posté le 06-01-2005 à 17:17:30
Rits75 a écrit : il parlait d'un typedef devant un struct!!! |
oui bon après coup j'ai édité
chrisbk a écrit : LISEZ LA QUESTION §§§§ |
lisez l'edit
Marsh Posté le 06-01-2005 à 17:30:59
antp a écrit : lisez l'edit |
Citation : Champion des excuses bidons |
Marsh Posté le 06-01-2005 à 17:38:40
antp a écrit : |
trop fort l'edit
|
bin la réponse est la meme : LISEZ LA QUESTION §§§
Marsh Posté le 06-01-2005 à 17:59:18
chrisbk a écrit : trop fort l'edit |
cf message de HelloWorld
Marsh Posté le 06-01-2005 à 18:02:24
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 :
|
utilisation de cette date:
Code :
|
Marsh Posté le 06-01-2005 à 18:09:27
Quest ce que ça fait si on affecte un nb tro grand par ex à minute : 6;
?
Merci de t explication yulara
Marsh Posté le 06-01-2005 à 18:12:10
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...
Marsh Posté le 06-01-2005 à 18:19:35
Ouai bref si on programme bien son programme il ne doit pas y avoir de pb d'overflow. Merci
Marsh Posté le 06-01-2005 à 18:22:31
ah bah j'ai tout faux (mais bon vu que ça arrive souvent, c'est pas surprenant )
minute aura bien un overflow de 64.
cf http://www.ann.jussieu.fr/courscpp [...] 06-G1.html
Marsh Posté le 06-01-2005 à 18:26:18
^^ ta ptetre tjrs faut mais moi je ne sais jamais rien !
Merci pour le lien
Marsh Posté le 06-01-2005 à 19:00:42
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
Marsh Posté le 06-01-2005 à 19:11:43
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 !
Marsh Posté le 05-01-2005 à 21:48:19
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