Pointeur et adressage en C++
Fermé
wafa84
-
18 nov. 2009 à 12:25
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 26 nov. 2009 à 13:15
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 26 nov. 2009 à 13:15
A voir également:
- Pointeur et adressage en C++
- Pointeur satellite eutelsat 5wa - Forum Satellite
- Comment faire apparaître le pointeur de la souris - Guide
- Pointeur souris instable - Forum souris / Touchpad
- Plan d'adressage ip excel ✓ - Forum Réseau
- En raison d'un problème d'adressage, votre colis a été réacheminé vers le site de distribution qui dessert votre adresse. ✓ - Forum Consommation et internet
5 réponses
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
18 nov. 2009 à 12:42
18 nov. 2009 à 12:42
comment savoir le nombre de bits sur lesquels la variable x s'étend?
sizeof x;// donne la taille en octet
comment accéder à un bit particulier de la variable x?
par masquage :
x & 4;
4 a pour code binaire 100, donc tu ne conserves que le 3ème bit.
sizeof x;// donne la taille en octet
comment accéder à un bit particulier de la variable x?
par masquage :
x & 4;
4 a pour code binaire 100, donc tu ne conserves que le 3ème bit.
je veux pas conserver que le 3ième bit, mais je veux accéder à ce bit et changer sa valeur tout en conservant le reste des cases, pour cela il faut utiliser le pointeur p, mais je sais pas exactement comment.
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
18 nov. 2009 à 14:11
18 nov. 2009 à 14:11
changer sa valeur reviens à la regarder à la tester et à la modifier.
if(x& 4 ) x-=4;//met le 3ème bit de 1 à 0
else /* if x&4==0*/ x+=4;//met le 3éme bit à 1.
Avec les pointeurs ce n'est pas possible car tu accede à des champ de minimum un octet.
une solution serai de faire une structure :
struct X{
int x1:1;
int x2:1;
...
int x32:1;}
mais je ne sasi plus si c'est en bit ou aussi en octet.
Ensuite en faisant un pointeur sur cette structure en en castant sur x, tu pourra peut être accéder à chaque bit avec le pointeur.
if(x& 4 ) x-=4;//met le 3ème bit de 1 à 0
else /* if x&4==0*/ x+=4;//met le 3éme bit à 1.
Avec les pointeurs ce n'est pas possible car tu accede à des champ de minimum un octet.
une solution serai de faire une structure :
struct X{
int x1:1;
int x2:1;
...
int x32:1;}
mais je ne sasi plus si c'est en bit ou aussi en octet.
Ensuite en faisant un pointeur sur cette structure en en castant sur x, tu pourra peut être accéder à chaque bit avec le pointeur.
le but est de trouver une méthode pour parcourir les bits d'une variable bit par bit peu importe le size de cette variable, bien sur cette variable est de type int et non pas un vecteur de bits
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
26 nov. 2009 à 13:15
26 nov. 2009 à 13:15
Je viens de t'en donnée deux des méthodes. Les pointeurs accèdent à la mémoire par paquet d'octet, pas de bit.
sizeof (void*) = 4 octet= 4*8 =32 bits (si tu est en 32 bits)
et lorsque tu fait :
void* x;
x est l'adresse d'un octet.
sizeof (void*) = 4 octet= 4*8 =32 bits (si tu est en 32 bits)
et lorsque tu fait :
void* x;
x est l'adresse d'un octet.