Devoirs Première

Liste des fichiers Notebook

Première NSI - DS 1 - Correction

Exercice 1 - Écritures des entiers

1. Convertir (11010110)₂ en décimal

En base 2, chaque position correspond à une puissance de 2. La position la plus à droite correspond à 2⁰.

| Puissance | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |

| --- | --- | --- | --- | --- | --- | --- | --- | --- |

| Valeur | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |

| Bit | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |

| Contribution | 128 | 64 | 0 | 16 | 0 | 4 | 2 | 0 |

On multiplie chaque bit par la puissance de 2 correspondant à sa position :

(11010110)₂

= 1 × 2⁷ + 1 × 2⁶ + 0 × 2⁵ + 1 × 2⁴ + 0 × 2³ + 1 × 2² + 1 × 2¹ + 0 × 2⁰

= 128 + 64 + 16 + 4 + 2

= 214.

Réponse : (11010110)₂ = (214)₁₀.

2. Convertir (173)₁₀ en binaire

On effectue des divisions euclidiennes successives par 2, jusqu'à obtenir un quotient nul.

| Nombre à diviser | Quotient | Reste |

| --- | --- | --- |

| 173 | 86 | 1 |

| 86 | 43 | 0 |

| 43 | 21 | 1 |

| 21 | 10 | 1 |

| 10 | 5 | 0 |

| 5 | 2 | 1 |

| 2 | 1 | 0 |

| 1 | 0 | 1 |

Les bits se lisent dans la colonne des restes du bas vers le haut. On obtient 10101101.

Réponse : (173)₁₀ = (10101101)₂.

3. Convertir (101101101101)₂ en hexadécimal

Un chiffre hexadécimal correspond à un groupe de quatre bits, car 16 = 2⁴.

On forme les groupes en partant de la droite. Ici, il y a déjà douze bits : on obtient trois groupes complets.

1011 | 0110 | 1101

| Groupe de quatre bits | Valeur décimale | Chiffre hexadécimal |

| --- | --- | --- |

| 1011 | 8 + 2 + 1 = 11 | B |

| 0110 | 4 + 2 = 6 | 6 |

| 1101 | 8 + 4 + 1 = 13 | D |

En hexadécimal, les valeurs de 10 à 15 s'écrivent respectivement A, B, C, D, E et F.

Réponse : (101101101101)₂ = (B6D)₁₆.

4. Convertir (2F4)₁₆ en décimal

En base 16, les positions, de droite à gauche, correspondent à 16⁰, 16¹, 16², etc. Le chiffre F représente la valeur 15.

(2F4)₁₆

= 2 × 16² + 15 × 16¹ + 4 × 16⁰

= 2 × 256 + 15 × 16 + 4 × 1

= 512 + 240 + 4

= 756.

Réponse : (2F4)₁₆ = (756)₁₀.

5. Nombre de valeurs et plage sur 7 bits

Chaque bit peut prendre deux valeurs : 0 ou 1. Avec sept bits, il y a donc :

2⁷ = 128 valeurs différentes.

Pour des entiers naturels, le plus petit code est 0000000, qui représente 0. Le plus grand est 1111111, qui représente :

2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰ = 2⁷ − 1 = 127.

Réponse : on peut coder 128 valeurs, soit les entiers de 0 à 127 inclus.

La borne maximale vaut 127, car 0 fait partie des 128 valeurs.

Exercice 2 - Complément à deux sur 8 bits

1. Plage des entiers relatifs représentables

En complément à deux sur n bits, les valeurs représentables vont de −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1.

Sur huit bits, cela donne :

−2⁷ = −128 et 2⁷ − 1 = 127.

Réponse : les entiers de −128 à 127 inclus.

2. Coder −18 en complément à deux sur 8 bits

Pour coder un entier négatif, on écrit d'abord la valeur positive sur huit bits, puis on inverse tous les bits et on ajoute 1.

Étape 1 : écrire 18 sur huit bits.

18 = 16 + 2 = 2⁴ + 2¹, donc 18 s'écrit 00010010.

Étape 2 : inverser les huit bits.

Chaque 0 devient 1 et chaque 1 devient 0. On obtient 11101101.

Étape 3 : ajouter 1.

11101101 + 00000001 = 11101110.

Réponse : −18 est représenté par 11101110.

3. Décoder 11110010 en complément à deux sur 8 bits

Le bit le plus à gauche vaut 1 : l'entier représenté est négatif.

retrouver la valeur positive opposée.

On inverse les bits : 11110010 devient 00001101.

On ajoute 1 : 00001101 + 00000001 = 00001110.

Or 00001110 représente 8 + 4 + 2 = 14. L'entier d'origine étant négatif, il vaut −14.

Réponse : 11110010 représente −14.

Exercice 3 - Lire un programme Python

from tutor import tutor



somme = 0

compteur = 0

for n in range(1, 8):

    if n % 3 == 0:

        somme = somme + n * n

        compteur = compteur + 1

print(somme, compteur)



tutor()

1. Tableau de suivi

Les valeurs de somme et de compteur indiquées dans le tableau sont celles obtenues après chaque passage dans la boucle.

| n | n % 3 | n % 3 == 0 | Calcul effectué | somme | compteur |

| --- | --- | --- | --- | --- | --- |

| 1 | 1 | Faux | Aucune modification | 0 | 0 |

| 2 | 2 | Faux | Aucune modification | 0 | 0 |

| 3 | 0 | Vrai | 0 + 3 × 3 = 9 | 9 | 1 |

| 4 | 1 | Faux | Aucune modification | 9 | 1 |

| 5 | 2 | Faux | Aucune modification | 9 | 1 |

| 6 | 0 | Vrai | 9 + 6 × 6 = 45 | 45 | 2 |

| 7 | 1 | Faux | Aucune modification | 45 | 2 |

Pour n = 3, on ajoute 3² = 9 et on augmente compteur de 1. Pour n = 6, on ajoute 6² = 36 et on augmente encore compteur de 1.

Quand le test est faux, les variables conservent leur valeur : elles ne sont pas remises à zéro.

2. Affichage de la dernière ligne

À la fin de la boucle :

print(somme, compteur) affiche les deux valeurs sur une même ligne, séparées par un espace :


45 2

3. Rôle du test n % 3 == 0

L'opérateur % donne le reste de la division euclidienne. Ainsi, n % 3 est le reste de la division de n par 3.

Exercice 4 - Écrire des programmes Python

1. Tarif d'entrée

La fonction tarif(age) doit renvoyer le prix correspondant à l'âge.

| Âge | Tarif |

| --- | --- |

| Moins de 12 ans | 4 € |

| De 12 à 17 ans inclus | 6 € |

| 18 ans ou plus | 10 € |

def tarif(age):

    if age < 12:

        return 4

    elif age < 18:

        return 6

    else:

        return 10



age = int(input("Saisir un âge entier : "))

print("Tarif :", tarif(age), "€")

2. Somme et nombre des entiers divisibles par 4

somme = 0

compteur = 0

nombre = int(input("Saisir un entier positif (0 pour arrêter) : "))



while nombre != 0:

    if nombre % 4 == 0:

        somme = somme + nombre

        compteur = compteur + 1

    nombre = int(input("Saisir un entier positif (0 pour arrêter) : "))



print("Somme :", somme)

print("Nombre d'entiers divisibles par 4 :", compteur)