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
Bonjour,

supposant qu'on a une variable x de type int et un pointeur p qui point sur cette variable,
donc dans la déclaration on fait

int x;
int *p;
p=&x;

bien sur la variable x est située dans une case mémoire sur un certain nombre de bits,
ma question est:
tout d'abord comment savoir le nombre de bits sur lesquels la variable x s'étend? c'est à la longueur de x . et comment accéder à un bit particulier de la variable x? par exemple le 3 ième.

merci d'avance.

Wafa

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
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.
0
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.
0
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
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.
0
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
0

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
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.
0