⌨ Spécialité NSI · Numérique et sciences informatiques Première Générale · Chapitre 2

Booléens, flottants et textes

Valeurs booléennes, opérateurs and, or, not et xor, tables de vérité et portes logiques ; représentation approximative des réels par les flottants ; codage des caractères (ASCII, Unicode, UTF-8).

1. Booléens et logique

Définition

Un booléen vaut True (vrai, $1$) ou False (faux, $0$). Opérateurs : non (not), et (and : vrai si les deux sont vrais), ou (or : vrai si au moins un est vrai), ou exclusif (xor, ^ en Python sur les entiers : vrai si exactement un est vrai).

Propriété · Tables de vérité

$a$$b$$a$ et $b$$a$ ou $b$$a$ xor $b$
00000
01011
10011
11110
&ET (and)?1OU (or)1NON (not)
Portes logiques (symboles normalisés) : ET, OU et NON.

Attention · Évaluation paresseuse

En Python, a and b n'évalue pas b si a est faux ; a or b n'évalue pas b si a est vrai. Ainsi x != 0 and 1 / x > 2 ne provoque jamais de division par zéro.

2. Les flottants

Définition

Les réels sont représentés de façon approchée par des nombres à virgule flottante (norme IEEE 754) : un signe, un exposant et une mantisse, en binaire. Beaucoup de décimaux simples, comme $0{,}1$, n'ont pas d'écriture binaire finie.

Exemple · 0,1 + 0,2

En Python, 0.1 + 0.2 == 0.3 renvoie False : on obtient 0.30000000000000004. On compare donc des flottants avec une tolérance : abs(a - b) < 1e-9.

3. Les textes

Propriété · Codages

ASCII : $7$ bits, $128$ caractères (lettres non accentuées, chiffres, ponctuation ; 'A' $= 65$). ISO-8859-1 (latin-1) : $8$ bits, ajoute les accents d'Europe de l'Ouest. Unicode attribue un numéro (point de code) à chaque caractère de toutes les écritures ; UTF-8 le code sur $1$ à $4$ octets, en restant compatible avec ASCII.

Activité · Explorer les codes en Python

MatérielPython.
ConsigneTester ord("A"), chr(97), ord("é") et "é".encode("utf-8").
Résultat$65$, 'a', $233$ et b'\xc3\xa9' (deux octets).
BilanUn texte mal décodé (UTF-8 lu en latin-1) affiche des caractères parasites comme « é » au lieu de « é ».

S'entraîner

Exercices corrigés

🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.

Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.

3

Table de vérité

★★☆

Dresser la table de vérité de $\text{non}(a \text{ et } b)$.

🔒 Correction réservée aux membres Créer un compte gratuit →
4

Loi de De Morgan

★★☆

Vérifier par une table que $\text{non}(a \text{ ou } b) = (\text{non } a) \text{ et } (\text{non } b)$.

🔒 Correction réservée aux membres Créer un compte gratuit →
6

Année bissextile

★★★

Une année est bissextile si elle est divisible par $4$ mais pas par $100$, ou divisible par $400$. Écrire l'expression booléenne en Python.

🔒 Correction réservée aux membres Créer un compte gratuit →
7

Évaluation paresseuse

★★☆

Pourquoi x != 0 and 10 / x > 1 ne provoque-t-il pas d'erreur quand $x = 0$ ?

🔒 Correction réservée aux membres Créer un compte gratuit →
8

Porte logique

★★☆

Une alarme sonne si la porte est ouverte ET que le système est armé. Quelle porte utiliser ?

🔒 Correction réservée aux membres Créer un compte gratuit →
9

Additionneur

★★★

Pour additionner deux bits $a$ et $b$ : somme $= a$ xor $b$, retenue $= a$ et $b$. Vérifier pour $1 + 1$.

🔒 Correction réservée aux membres Créer un compte gratuit →
10

Flottants

★☆☆

Que renvoie 0.1 + 0.2 == 0.3 en Python ? Pourquoi ?

🔒 Correction réservée aux membres Créer un compte gratuit →
11

Comparer des flottants

★★☆

Écrire une fonction presque_egal(a, b) qui teste l'égalité à $10^{-9}$ près.

🔒 Correction réservée aux membres Créer un compte gratuit →
12

Valeurs exactes

★★☆

Parmi $0{,}5$ ; $0{,}25$ ; $0{,}1$, lesquels sont représentés exactement en binaire ?

🔒 Correction réservée aux membres Créer un compte gratuit →
13

Boucle avec flottants

★★★

Pourquoi la boucle x = 0 ; while x != 1: x = x + 0.1 ne s'arrête-t-elle jamais ?

🔒 Correction réservée aux membres Créer un compte gratuit →
14

Code ASCII

★☆☆

Le code ASCII de 'A' est $65$. Code de 'D' ? Caractère de code $72$ ?

🔒 Correction réservée aux membres Créer un compte gratuit →
15

Majuscule en minuscule

★★☆

Les minuscules ont un code supérieur de $32$ aux majuscules. Écrire une fonction minuscule(c) pour une lettre majuscule non accentuée.

🔒 Correction réservée aux membres Créer un compte gratuit →
16

Taille en UTF-8

★★☆

Combien d'octets occupe le mot « été » en UTF-8 ? en latin-1 ?

🔒 Correction réservée aux membres Créer un compte gratuit →
17

Caractères parasites

★★☆

Un site affiche « Café ». Que s'est-il passé ?

🔒 Correction réservée aux membres Créer un compte gratuit →
18

Nombre de caractères ASCII

★☆☆

Pourquoi ASCII ne code-t-il que $128$ caractères ?

🔒 Correction réservée aux membres Créer un compte gratuit →
20

Vrai ou faux

★★☆

a) True or False vaut False. b) UTF-8 est compatible avec ASCII. c) Tous les décimaux sont exacts en flottant.

🔒 Correction réservée aux membres Créer un compte gratuit →

Vérifier

Avez-vous bien compris ?

Répondez au quiz : la correction s'affiche immédiatement.