marcellus911 a écrit :
salut,
je dois analyser un programme C mais n'ayant pas beaucoup fait de C il y a qqles instructions dont je ne comprend pas le sens (les instructions 1 à 4):
int data; // entier
unsigned int *puCRC; // pointeur sur entier non signé
1. data <<=6; // affectation ??
2. *puCRC ^=data; // ??
3. *puCRC >>= 8; // ??
4. data = (data^(*puCRC)); // ??
|
1. peut s'écrire aussi data=data << 6
2. peut s'écrire aussi *puCRC=(*puCRC) ^ data
3. peut s'écrire aussi *puCRC=(*puCRC) >> 8
Le décalage de bits revient à décaler vers la droite (ou vers la gauche) les bits d'une expression
Ex: a=3 => a=00000011 (en binaire)
a << 3 => 00011000 soit 24
Décaler de "n" bits vers la gauche revient à multiplier la valeur par 2^n
Décaler de "n" bits vers la droite revient à diviser la valeur par 2^n (il faut prendre en compte le bit de signe si l'opérande est signé mais ce pb ne te concerne pour l'instant pas)
Le XOR se fait bit à bit sur les deux opérandes
Ex: a=3 (0011) et b=5 (0101)
a^b => 0011 XOR 0101 (bit par bit) => 0110 soit 6
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.