NSI — Encodage & Expressions booléennes (Résumé)
NSI — 1ère

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).

Objectifs : évaluer une expression booléenne  •  comprendre la représentation des caractères
🔗 Ouvrir le simulateur de circuits logiques logic.modulo-info.ch est un simulateur en ligne de circuits logiques : placez des portes NON/NOT, ET/AND, OU/OR, XOR, reliez des entrées/sorties, activez les interrupteurs et observez la propagation des valeurs. Idéal pour expérimenter les tables de vérité et vérifier vos expressions.

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})

ABA AND BA OR BA XOR B
FalseFalseFalseFalseFalse
FalseTrueFalseTrueTrue
TrueFalseFalseTrueTrue
TrueTrueTrueTrueFalse
ANOT A
FalseTrue
TrueFalse

Priorité & évaluation

  • NOT est prioritaire, puis AND, puis OR. Utiliser des parenthèses pour lever l’ambiguïté.
  • Court-circuit Python : and n’évalue pas la droite si la gauche est False ; or n’évalue pas la droite si la gauche est True.

Lois de De Morgan

¬(A ∧ B) ≡ (¬A) ∨ (¬B)
¬(A ∨ B) ≡ (¬A) ∧ (¬B)
En Python : 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èreASCII (déc)UnicodeUTF-8 (hex bytes)
A65U+004141
é(—)U+00E9C3 A9
(—)U+20ACE2 82 AC
🙂(—)U+1F642F0 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

  1. Ouvrir le simulateur : logic.modulo-info.ch.
  2. Créer deux interrupteurs (entrées) marqués A et B, et quatre sondes de sortie (ou LED) nommées S1, S2, S1′, S2′.
  3. 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.
  4. Tester toutes les combinaisons (A,B) ∈ {(0,0),(0,1),(1,0),(1,1)} en basculant les interrupteurs.
  5. Capture d’écran (ou lien de partage du simulateur) et mini-conclusion : expliquez en une phrase ce que prouvent ces égalités.
Astuce : si votre simulateur permet la duplication/alignement, construisez d’abord le circuit gauche puis dupliquez pour gagner du temps.

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.

© NSI - Salah.cc