Pointeur et adressage en C++
wafa84
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Pointeur et adressage en C++
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Le pointeur de mon pc portable ne marche plus - Guide
- Adressage mac - Guide
- Pointeur souris disparu pc portable ✓ - Forum souris / Touchpad
5 réponses
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.
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