Bonjour à tous,
Question, dont la réponse est peut-être très simple :
J'ai un mot sur 16 bits : XXXX XXXX XXXX XXXX ; si je veux récupérer les bits en gras dans un mot de 8 bits (unsigned char), faut il que je passe par un masque :
Ou est ce que ça marche si je fais simplement :Code:unsigned int mot ; unsigned char valeur = (mot & 0xFFC0) >> 6;
Le problème dans ce cas, est que ce sont seulement les 0 de droite qui sortent qui sont perdus, ou tous les bits de poids faibles sont perdus (0 et 1)?Code:unsigned int mot ; unsigned char valeur = (mot) >> 6;
Même chose pour un décalage à gauche si je veux garder les bits en gras XXXX XXXX XXXX XXXX ; est ce que cette instruction :
équivaut à :Code:unsigned int mot ; unsigned char valeur1 = (mot & 0x003F) << 2;
C'est pour une optimisation de code, histoire de gagner du temps.Code:unsigned int mot ; unsigned char valeur1 = (mot) << 2;
Merci de vos réponses.
-----