Bonjour,
comment fait -on des vecteurs de bits en C?
Bonjour,
comment fait -on des vecteurs de bits en C?
Salut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct ma_structure_a_champs_de_bit { unsigned champ1 : 1; unsigned champ2 : 1; unsigned champ3 : 1; };
Comment doit-on utiliser ce vecteur après?
Sur quel site peut-on trouver un exemple de code sur les vecteurs de bits?
Merci.
Ensuite , j'aimerais faire des blocs comme en VHdl qui communique entre eux avec des bits de validations. est-ce possible en c? Si oui comment doit-on faire? merci.
Tu n'as pas de type bit en C. Le C est incapable d'accéder directement à des objets de taille qui ne sont pas un multiple du byte.Envoyé par sandball22
Tu peux soit utiliser des tableaux de char, soit te batir une couche qui manipule des bits.
C'est pas vraiment possible... Il y a des bidouilles...Envoyé par sandball22
typedef struct _Phase
{
unsigned char Tab[3]; /3*8=24bits
} Phase;
Voila ma structure comment fait-on ensuite pour initialiser ne valeur pour la phase?
Phase= 00000000000000000000000; ?
Merci de votre aide.
telle qu'est faite ta structure, ce serait soit
soit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Phase phase1={0,0,0};
Mais ce dont tu as besoin est plus quelque chose du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Phase phase 1; phase1.tab[0]=0; phase1.tab[1]=0; phase1.tab[2]=0;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 typedef union{ unsigned char vecteur; struct _mesBits{ unsigned bit00 : 1; unsigned bit01 : 1; unsigned bit02 : 1; unsigned bit03 : 1; unsigned bit04 : 1; unsigned bit05 : 1; unsigned bit06 : 1; unsigned bit07 : 1; } }tMyType; tMyType myVar; myVar._mesBits.bit00 = 1; myVar._mesBits.bit01 = 0; myVar._mesBits.bit02 = 1; ... printf("%d",myVar.vecteur); // affiche 5 // Pour éclaicir le code tu peux faire un truc du genre #define CHIP_SELECT myVar._mesBits.bit00 #define CLOCK myVar._mesBits.bit01 #define READ_EN myVar._mesBits.bit02 // Ensuite si tu fais myVar.vecteur = 5; // tu auras // CHIP_SELECT == 1 // CLOCK == 0 // READ_EN == 1 // à vrai
Cette façon de faire dépend de l'implantation et n'est par conséquent absolument pas portable.Envoyé par DaffyDuck
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Ben je le porte sur PC Windows, DSP Freescale, PIC, 8051 et ARM...Envoyé par mujigka
Par contre, on ne garantie pas la taille réelle de la structure, qui elle dépend de l'architecture, mais je ne pense pas que ce soit réellement le problème ici. Je pense que le PO cherche un moyen de simuler un comportement d'une entité VHDL sur PC, et donc de faire un champ de bit comme en VHDL. La structure que je propose présente l'avantage de pouvoir faire en sorte d'accéder indépendamment à tous les bits de la structure et au vecteur entier. C'est une solution possible en sachant qu'il y en a plein.
Ici, ta structure encapsule un tableau de unsized char dont la taille vaut 3 bytes. Rien ne dit que sa taille en bits soit de 24. En tous les cas, je n'ai pas l'impression de bien saisir ton problème initial... vecteur de bits ou vecteur de bytes?Envoyé par sandball22
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Bonjour Thierry,Envoyé par mujigka
un unsigned char fait bien 8 bits non?
donc 3 unsigned char font bien 3 * 8 = 24 bits.
Peu importe si la structure fait plus que 24 bits. Le PO désire mémorise 24 bits en forme de vecteur.
Non, la taille d'un unsigned char est de 1 byte, et la taille du byte dépend de l'implantation (La constante CHAR_BIT définie dans limits.h donne le nombre de bits utilisés pour représenter un char). Mais bon, comme tu dis, ce n'est pas le plus important ici. Une manière portable d'accéder aux bits d'un tableau de unsigned char est d'utiliser les opérateurs &, |, <<, >>, ^, ~.Envoyé par jowo
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Sur ta machine, peut être. Ce n'est pas garanti pas le langage C qui précise 'au moins 8-bit'.Envoyé par jowo
Partager