Vous êtes sur la page 1sur 7

Electronique

Cours NSI
et logique booléenne
Dans l’ordinateur, les chiffres binaires 0 et 1 sont représentés par des tensions électriques : tension
basse (proche de 0V) pour le 0 et tension haute (généralement proche de 5V, mais peut différer
selon les circuits) pour le 1.

I – Les transistors
La brique élémentaire des circuits électroniques est le transistor. Il s’agit d’un composant capable de
se comporter comme un interrupteur piloté électriquement (par courant ou par tension).
Ci-contre la représentation d’un transistor bipolaire : l’application ou non d’un faible
courant sur la base B (commande) ouvre ou ferme la liaison C-E
Pour une introduction sur la création de transistors à partir des semi-conducteurs, vous
pouvez visionner cette vidéo.
Autre exemple : le transistor PMOS est un transistor à effet de champ qui se pilote
par tension (et non plus par courant). Il est normalement fermé, c’est-à-dire :
• si la commande (A) est à 0 (0V), le transistor est fermé, le courant circule
de VDD à f, et f est donc au potentiel 5V, i.e. à f est à 1
• si la commande (A) est à 1 (5V), le transistor s’ouvre et f est à 0 (0V)

II – Logique combinatoire
Le transistor ci-dessus permet de réaliser une opération élémentaire appelée « porte logique NON »
dans laquelle la sortie (notée f ci-dessus) vaut 0 quand l’entrée (A) vaut 1 et vaut 1 quand l’entrée
vaut 0.
2.1 Principales portes logiques
On peut représenter l’état d’une sortie S par rapport aux entrées (a, b, …) de plusieurs manières,
notamment avec une table logique ou une notation fonctionnelle. Voici les principales portes
logiques, qui s’obtiennent par combinaison de transistors (cf schéma électrique)

1
Electronique
Cours NSI
et logique booléenne

2.2 fonctions booléennes

Ces circuits électroniques peuvent être décrits comme des fonctions booléennes, c’est-à-dire des
fonctions qui prennent en entrée un ou plusieurs bits (a, b, c, ...) et qui renvoient en résultat un bit,
que nous noterons généralement S.
La table logique d’une fonction ayant n bits en entrée
n n
aura 2 lignes, correspondant aux 2 combinaisons possibles des entrées.

Exercice : dresser la table logique de la fonction f (a ,b , c)=(a∧b)⊕(¬b∨c)

2
Electronique
Cours NSI
et logique booléenne
2.3 Identités élémentaires

¬ est involutive : ¬(¬a)=...


1 est neutre pour ∧ : 1∧a=... 0 est neutre pour ∨ : 0∨a=...
0 est absorbant pour ∧ : 0∧a=... 1 est absorbant pour ∨ : 1∨a=...
∧ est idempotente : a∧a=... ∨ est idempotente : a∨a=...
complément : a∧¬a=... a∨¬a=...

commutativité : a∧b=b∧a a∨b=b∨a


associativité : a∧(b∧c )=(a∧b)∧c a∨(b∨c )=(a∨b)∨c
distributivité : a∧(b∨c)=(a∧b)∨(a∧c) a∨(b∧c )=(a∨b)∧(a∨c)
Lois de Morgan : ¬(a∧b)=¬a∨¬b ¬(a∨b)=¬a∧¬b

On notera que :
1. le NON est prioritaire sur le ET ( ∧ ) et le OU ( ∨ ).
¬a∧b signifie bien (¬a)∧b

2. le ET ( ∧ ) est prioritaire sur le OU ( ∨ ). Par exemple :


• les parenthèses ne sont pas obligatoire dans le membre de droite lorsqu’on distribue
le ∧ sur le ∨ (elles sont nécessaires dans le membre de gauche)

• les parenthèses sont nécessaires dans le membre de droite (mais pas dans celui de
gauche) lorsqu’on distribue le ∨ sur le ∧

→ Il est souvent préférable de mettre des parenthèses inutiles pour plus de lisibilité

Exercice : montrer que ¬(b∧(a∨¬b))=(¬a∨¬b)

Exercice : donner la fonction correspondant à la table logique ci-contre

3
Electronique
Cours NSI
et logique booléenne
III - L’additionneur

Nous allons nous intéresser aux circuits dont les sorties dépendent directement des entrées (on parle
de circuits combinatoires). Il s’agit d’assembler plusieurs circuit élémentaires (portes logiques) afin
d’obtenir des circuits plus complexes.

Remarque : il existe aussi des circuits dits « séquentiels » (hos programme) où les sorties peuvent
dépendre des valeurs antérieures (dans le temps) des entrées. Ces circuits possèdent des capacités de
mémorisation et sont utilisés pour construire des composants mémoire comme la RAM d’un
ordinateur par exemple.

3.1 Demi-additionneur

Le circuit permettant d’additionner des nombres binaires codés sur n bits est construit en mettant
en cascade des additionneurs 1 bit. Ces additionneurs 1 bit sont basés sur un circuit plus simple, le
demi-additionneur.
Remplissons la table logique du demi-additionneur 1 bit, qui à partir des 2 entrées a et b, renvoie la
somme s sur 1 bit, ainsi que l’éventuelle retenue c.
Entrées Sorties
a b s c
0 0 0 0
0 1
1 0
1 1

Si on écrit les sorties en fonction des entrées, on a :

• s=...

• c=...

d’où le circuit :

4
Electronique
Cours NSI
et logique booléenne
3.2 Additionneur
Un additionneur 1 bit complet est un circuit :
• qui prend en entrées deux bits a et b et une retenue c 0
• qui renvoie la somme s=a+b+c 0 ainsi qu’une retenue c 1

Remplissons la table logique ci-dessous :

Entrées Sorties
a b c0 s c1 a⊕b a∧b
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Les deux dernières colonnes permettent d’écrire s et c 1 à partir des entrées tout en repartant des
résultats du demi-additionneur :
• s=(a⊕b).. .
• c 1=a∧b.. .

On obtient le circuit de l’additionneur 1 bit en utilisant 2 demi-additionneurs :

Nous verrons en exercice comment résaliser un additionneur 2 bits

5
Electronique
Cours NSI
et logique booléenne
IV – Opérations sur les bits en Python
Les portes logiques et les circuits combinatoires comme l’additionneur sont câblés au sein du
processeur (CPU) d’une machine afin d’effectuer des opérations sur les bits. On retrouve ces
opérations dites bit-à-bit (bitwise en anglais) en Python :
• le & correspond à la porte ET
On rappelle que le préfixe 0b indique à
l’interprète que le nombre est écrit en binaire

L’utilisation du système décimal s’avére plus compacte, mais il faut comprendre que le calcul
se fera toujours sur les bits. L’opération ci-dessus est équivalente à :

• le | correspond à la porte OU

• le ^ est le ou exclusif

Python propose également les opérateurs de décalage de bits ≪ et ≫


• ainsi a≪n décale les bits du nombre a de n rangs vers la gauche

par exemple, a≪1 revient à multiplier a par 2

• a≫n décale les bits du nombre a de n rangs vers la droite

Toutes ces opérations sont extrèmement rapides pour un processeur, bien plus rapides qu’une simple
addition (l’additionneur 1 bits comportant déjà 5 portes logiques). Nous verrons en terminale des
exemples intéressants de leur utilisation, mais on peut déjà remarquer qu’une division entière par
une puissance de 2 peut être effectuée très rapidement avec l’opérateur ...

6
Electronique
Cours NSI
et logique booléenne
V – Variables de type booléen en Python
5.1 Opérateurs booléens
De la même manière que l’ensemble des entiers vient avec des opérations arithmétiques, l’ensemble
des booléens est associé aux 3 opérations booléennes (déjà vues) permettant de combiner leurs
valeurs. Ces 3 opérations sont données par ordre de priorité
not négation
and conjonction
or disjonction
Evidemment, ces opérateurs suivent les identités élémentaires vues au 2.2 (en remplaçant 0 et 1 par
False et True)
Exemple : la règle du complément avec l’opérateur and
donne False, que a soit True ou False

5.2 Opérateurs de comparaison

Nous avons déjà vu les opérateurs de comparaisons :


Opérateurs Signification
< Strictement inférieur
<= Inférieur ou égal
> Strictement supérieur
>= Supérieur ou égal
‘== égal
!= différent

Ils renvoient toujours un booléen :

Mais nous pouvons maintenant expliquer plus précisément les comparaisons de chaînes de
caractères :
→ une lettre est inférieure à une autre si elle apparaît avant dans la table unicode (équivalent ASCII
pour les caractères non accentués). Ainsi, « T » est plus petit que « t » et « Terminale » est
strictement inférieur à « terminale »

On peut retrouver le point de code unicode avec la fonction ord

Vous aimerez peut-être aussi