Chapitre 2 : Encodage des caractères & Expressions booléennes
Cette page résume l’essentiel : variables et opérateurs booléens (AND, OR, NOT, XOR), règles de priorité, lois de De Morgan, court-circuit en Python, puis l’encodage des caractères (ASCII, ISO-8859-1, Unicode, UTF-8).
1) Le calcul booléen — bases
Une valeur booléenne vaut True ou False. Une expression booléenne combine des opérateurs pour produire un booléen.
Opérateurs usuels
- AND (conjonction) : vrai seulement si les deux opérandes sont vrais.
- OR (disjonction) : vrai si au moins un des opérandes est vrai.
- NOT (négation) : inverse la valeur.
- XOR (ou exclusif) : vrai si exactement un seul des deux est vrai.
Tables de vérité (A, B ∈ {False, True})
| A | B | A AND B | A OR B | A XOR B |
|---|---|---|---|---|
| False | False | False | False | False |
| False | True | False | True | True |
| True | False | False | True | True |
| True | True | True | True | False |
| A | NOT A |
|---|---|
| False | True |
| True | False |
Priorité & évaluation
- NOT est prioritaire, puis AND, puis OR. Utiliser des parenthèses pour lever l’ambiguïté.
- Court-circuit Python :
andn’évalue pas la droite si la gauche estFalse;orn’évalue pas la droite si la gauche estTrue.
Lois de De Morgan
¬(A ∨ B) ≡ (¬A) ∧ (¬B)
not (a and b) == (not a) or (not b) et not (a or b) == (not a) and (not b).Python — mini-tests
# Tables de vérité rapides
vals = [False, True]
print("A B A and B A or B A ^ B")
for a in vals:
for b in vals:
print(a, b, a and b, a or b, (a != b))
# Priorité et parenthèses
a = True; b = False
print( not a or b ) # équivaut à ( (not a) or b )
print( a and not (b or a) )
# De Morgan (vérification par exhaustivité)
for a in vals:
for b in vals:
assert (not(a and b)) == ((not a) or (not b))
assert (not(a or b)) == ((not a) and (not b))
2) Représentation d’un texte en machine
Un caractère est codé comme un nombre, puis stocké sous forme de bits.
Standards d’encodage (survol)
- ASCII (7 bits) : 128 codes (0–127) pour lettres basiques, chiffres, ponctuation, contrôles.
- ISO-8859-1 (Latin-1, 8 bits) : 256 codes, ajoute les caractères d’Europe de l’Ouest.
- Unicode : attribue un point de code (U+XXXX) à chaque caractère mondial.
- UTF-8 : manière de stocker Unicode en 1 à 4 octets (variable). Compatible ASCII.
Exemples de codes
| Caractère | ASCII (déc) | Unicode | UTF-8 (hex bytes) |
|---|---|---|---|
| A | 65 | U+0041 | 41 |
| é | (—) | U+00E9 | C3 A9 |
| € | (—) | U+20AC | E2 82 AC |
| 🙂 | (—) | U+1F642 | F0 9F 99 82 |
Python — manipuler les encodages
# ASCII / Unicode de base
print(ord('A')) # 65
print(hex(ord('A'))) # 0x41
print(chr(233)) # é (selon interprétation Unicode)
# Bytes UTF-8 d'une chaîne
s = "Café €"
b = s.encode("utf-8")
print(b) # b'Caf\xc3\xa9 \xe2\x82\xac'
print(list(b)) # valeurs décimales des octets
# De UTF-8 vers str (décodage)
print(b.decode("utf-8"))
# Afficher les bytes hexadécimaux jolis
print(" ".join(f"{byte:02X}" for byte in b))
3) Exercice guidé — Vérifier la loi de De Morgan avec le simulateur
Objectif : construire deux circuits équivalents et comparer leurs sorties pour les quatre combinaisons d’entrées.
Étapes
- Ouvrir le simulateur : logic.modulo-info.ch.
- Créer deux interrupteurs (entrées) marqués A et B, et quatre sondes de sortie (ou LED) nommées S1, S2, S1′, S2′.
-
Construire le circuit gauche pour \( \neg(A \land B) \) :
- Relier A et B à une porte AND.
- Relier la sortie de AND à une porte NOT ⟶ sortie S1.
- Tester toutes les combinaisons (A,B) ∈ {(0,0),(0,1),(1,0),(1,1)} en basculant les interrupteurs.
- Capture d’écran (ou lien de partage du simulateur) et mini-conclusion : expliquez en une phrase ce que prouvent ces égalités.
Ressources supplémentaires
Pour aller plus loin : expérimentez des portes logiques dans le simulateur ci-dessus, puis regardez cette vidéo d’introduction aux expressions booléennes et à la logique.
🔗 Lien direct (au cas où l’iframe est bloquée) : ouvrir la vidéo dans YouTube.