Vous êtes sur la page 1sur 15

Operateurs Binaires

Bits à Bits
PORTA=0b00000100;
PORTA=4;
• PORTA et PINA : Mémoires 8 bit dans Atmega32 liés avec les
interfaces d’entrée et de sortie (PA0 …PA7) du Microcontrôleur
Operateur binaire NON
en langage C: ~

• L'opérateur binaire NON inverse l'état de bits :

a NON a : ~a
0 1
1 0
Operateur binaire NON
en langage C: ~
• Char A,B; // Réservation de la mémoire 8 bit pour A et pour B. Les
// les deux mémoires sont encor vides

bit: 7 6 5 4 3 2 1 0
A:
B:

• A=7; // Affectation de la valeur décimale 7 dans la mémoire A.


// A contient les bits: 0000 0111
// autre écriture possible en langage C :
// A=0b00000111 (binaire) ou A=0x07 (hexadécimale)
• B= (~A); // B contient les bit : 1111 1000
// en décimale B devient 248 : ( 27 + 26 + 25 + 24 + 23 )
Operateur binaire: ET
En langage C : &

• L'opérateur binaire ET combine l'état de 2 bits selon le


tableau suivant :
Operateur binaire ET: &
• Char A=7; // Réservation de la mémoire 8 bit pour la variable A
// et affectation de la valeur décimale 7
// A : 0b0000 0111

• Char B=13; // Réservation de la mémoire 8 bit pour la variable B


// et affectation de la valeur décimale 13
// B : 0b0000 1101 B=0x0D;

• Char C; // Réservation de la mémoire 8 bit pour la variable C

• C= A & B; // C : 0b0000 0101 ( c’est 5 en décimale)


Operateur binaire: OU
En langage C : |

• L'opérateur binaire OU combine l'état de 2 bits selon le


tableau suivant :
Operateur binaire OU: |
• Char A=7; // Réservation de la mémoire 8 bit pour la variable A
// et affectation de la valeur décimale 7
// A : 0b0000 0111

• Char B=13; // Réservation de la mémoire 8 bit pour la variable B


// et affectation de la valeur décimale 13
// B : 0b0000 1101

• Char C; // Réservation de la mémoire 8 bit pour la variable C

• C= A | B; // C : 0b0000 1111 ( c’est 15 en décimale) ( 0x0F)


Operateur binaire décalage à gauche: <<
• Char A=7; // Réservation de la mémoire 8 bit pour la variable A
// et affectation de la valeur décimale 7
// A : 0b0000 0111
• Char C; // Réservation de la mémoire 8 bit pour la variable C

• C= A << 2; // A : 0b0000 0111

// C : 0b0001 1100 ( c’est 28 en décimale)

• C= A << 7; // A : 0b0000 0111

// C : 0b1000 0000 ( c’est 27= 128 en décimale)

• C= 1 << 2; // C : 0b0000 0100 ( c’est 4 en décimale)

• C= 1 << 7; // C : 0b1000 0000 ( c’est 27=128 en décimale)


Operateur binaire décalage à droite: >>
• Char A=7; // Réservation de la mémoire 8 bit pour la variable A
// et affectation de la valeur décimale 7
// A : 0b0000 0111

• Char C; // Réservation de la mémoire 8 bit pour la variable C

• C= A >> 2; // A : 0b0000 0111

// C : 0b0000 0001 ( c’est 1 en décimale)


Pourqoui les operateurs binaires

PORTA= 4;

• PORTA et PINA : Mémoires 8 bit dans Atmega32 liés avec les


interfaces d’entrée et de sortie (PA0 …PA7) du Microcontrôleur
Mettre un bit à 1
• Char A; // Soit A est une variable 8 bit
• Pour mettre le bit numéro 2 de la variable A à 1:

Variable A A: a7 a6 a5 a4 a3 a2 a1 a0

Masque | 0 0 0 0 0 1 0 0
_____________________________________
A= a7 a6 a5 a4 a3 1 a1 a0

• En langage C on écrit:
• A = A | 0b00000100; A = A | (1<<2);
Mettre un bit à 0
• Char A; // Soit A est une variable 8 bit
• Pour mettre le bit numéro 2 de la variable A à 0:

Variable A A: a7 a6 a5 a4 a3 a2 a1 a0

Masque & 1 1 1 1 1 0 1 1
_____________________________________
A= a7 a6 a5 a4 a3 0 a1 a0

• En langage C on écrit:
• A = A & 0b11111011;
• A = A & (~(0b00000100)); A = A & (~(1<<2));
tester un bit
• Char A; // Soit A est une variable 8 bit
• Pour savoir si le bit numéro 6 de la variable A est un 1 ou 0:

Variable A A: a7 a6 a5 a4 a3 a2 a1 a0

Masque (1<<6) : & 0 1 0 0 0 0 0 0


_____________________________________
A & (1<<6) 0 a6 0 0 0 0 0 0

• Si le bit a6 vaut 0, le résultat du masquage A & (1<<6) est nul.


• Si le bit a6 vaut 1, le résultat du masquage A & (1<<6) est différent de 0
• En langage C pour tester le bit numéro 6 de A :
if ( (A &(1<<6) ) { //Mettre Moteur en Marche}
Else { // Mettre Moteur en Arrêt }
Résumé
• Mettre le bit numéro n de la mémoire A à 1 :
A=A | (1<<n);

• Mettre le bit numéro n de la mémoire A à 0 :


A= A & (~(1<<n));

• Tester le bit numéro n de la mémoire A :


if ( A & (1<<n)) { // exécuter une action}

• Operateurs logiques : &&; ||; == ; |=


– A= 4 & 6; // c’est 4
– A= 4 && 6; // c’est 1
– A= 4 || 0; // c’est 1

Vous aimerez peut-être aussi