Merci de m'éclairer
UCSR0A &= ~(1 << U2X0);
Le commentaire de ce code dit que le bit U2X0 du registre UCSR0A est mis à zéro....
Bon '&=' ça va, je maîtrise mais ~(1<<U2XO) je vois pas et j'aimerai que l'on m'explique.
s'il vous plaît
Alain
Merci de m'éclairer
UCSR0A &= ~(1 << U2X0);
Le commentaire de ce code dit que le bit U2X0 du registre UCSR0A est mis à zéro....
Bon '&=' ça va, je maîtrise mais ~(1<<U2XO) je vois pas et j'aimerai que l'on m'explique.
s'il vous plaît
Alain
Salut,
d'après ce que je comprend, la variable U2X0 contient la position du bit U2X0.
Alors par exemple, soit une séquence de 4 bits à 0.
( 1 << U2X0)
0001 << 0 = 0001
0001 << 1 = 0010
0001 << 2 = 0100
0001 << 3 = 1000
On "déplace" tous les bits grâce à une rotation vers la gauche de X bits.
La deuxième étape est de prendre la négation :
soit on imagine le troisième exemple qui donne 0100 :
~(0100) = 1011
Et ensuite, grâce à l'opération "&", le troisième bit sera mis à zéro ! (Car 1 & 0 = 0 et 0 & 0 = 0). Les autres bits ne changent pas, car 1 & 1 = 1 et 0 & 1 = 0.
@Trademark
Pour préciser, ce n'est pas une rotation, mais une translation ou un décalage (le bit de poids fort ne va pas dans le bit de poids faible) .On "déplace" tous les bits grâce à une rotation vers la gauche de X bits.
A noter que le résultat de a<<N n'est pas défini en terme de la position des bits mais de façon arithmétique : il est défini comme le résultat de la multiplication de a par 2^N.
a doit être unsigned ou non négatif (pour que la représentation du nombre soit bien définie) et le résultat doit être représentable dans le type du résultat, sinon le comportement est indéfini.
Publication : Concepts en C
Mon avatar : Glenn Gould
--------------------------------------------------------------------------
Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager