Livre_silo 30 août 2013 16:32 Page 353
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
353
A – Travaux pratiques
2 Afin d’obtenir une représentation en mémoire plus efficace, les constructeurs de calculatrices regroupent parfois trois chiffres décimaux sur un même groupe de bits. Expliquer
pourquoi ce choix est a priori meilleur que celui de la question précédente. Imaginer
également les problèmes que cela peut poser.
3 Les dépassements arithmétiques sur les entiers existent-ils sur votre calculatrice ? Pour
le vérifier, on pourra par exemple essayer de calculer et d’afficher les puissances de 2
successives : au bout d’un certain nombre d’itérations, la façon dont le nombre calculé
s’affiche est différente. Que peut-on en conclure quant à la représentation des nombres
dans la mémoire des calculatrices ⁵ ?
4 On va maintenant étudier la représentation en machine des nombres à virgule flottante.
a) Dans un premier temps, on peut déterminer la taille de la mantisse. Pour cela, programmer ou exécuter à la main l’algorithme suivant, en prenant bien soin d’écrire 1.0
à la première instruction pour assurer que a sera un nombre à virgule flottante :
a ← 1.0
tant que a + 1.0 − a = 1.0 faire
a ← 2.0 ∗ a
Résultat : a
Expliquer pourquoi la condition de la boucle tant que finit par être fausse et déduire
de la valeur finale de a la taille de la mantisse en mémoire.
b) Ensuite, on peut évaluer le nombre de chiffres sur lequel l’exposant est représenté.
Pour cela, reprendre l’algorithme précédent avec une boucle tant que dont la condition est 2.0∗a ̸ = a. Pour quelle raison cet algorithme finit-il également par s’arrêter ?
Déduire de la dernière valeur prise par a la taille de l’exposant en mémoire. Vérifier
qu’une limite similaire existe pour les exposants négatifs.
c) Les calculatrices possèdent pour la plupart des fonctions qui permettent de vérifier
l’état de la mémoire. À l’aide de ces fonctions, déterminer la place utilisée par la variable a en mémoire : si cette valeur est cohérente avec les résultats des deux questions
précédentes, quelle est l’unité de taille mémoire utilisée ici ?
Sur les calculatrices permettant d’écrire des entiers longs, on vérifiera également la
croissance de la taille mémoire utilisée par un entier en fonction de sa valeur.
5. Certaines calculatrices permettent de faire des calculs symboliques ; elles disposent alors d’entiers longs
similaires à ceux de Python. Une lecture approfondie de la documentation révèle tout de même que le nombre
de chiffres autorisé est borné, par exemple 614 chiffres sur les TI 89 et 92. Un algorithme similaire à celui de la
prochaine question avec des valeurs entières met en lumière cette limitation.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
353
A – Travaux pratiques
2 Afin d’obtenir une représentation en mémoire plus efficace, les constructeurs de calculatrices regroupent parfois trois chiffres décimaux sur un même groupe de bits. Expliquer
pourquoi ce choix est a priori meilleur que celui de la question précédente. Imaginer
également les problèmes que cela peut poser.
3 Les dépassements arithmétiques sur les entiers existent-ils sur votre calculatrice ? Pour
le vérifier, on pourra par exemple essayer de calculer et d’afficher les puissances de 2
successives : au bout d’un certain nombre d’itérations, la façon dont le nombre calculé
s’affiche est différente. Que peut-on en conclure quant à la représentation des nombres
dans la mémoire des calculatrices ⁵ ?
4 On va maintenant étudier la représentation en machine des nombres à virgule flottante.
a) Dans un premier temps, on peut déterminer la taille de la mantisse. Pour cela, programmer ou exécuter à la main l’algorithme suivant, en prenant bien soin d’écrire 1.0
à la première instruction pour assurer que a sera un nombre à virgule flottante :
a ← 1.0
tant que a + 1.0 − a = 1.0 faire
a ← 2.0 ∗ a
Résultat : a
Expliquer pourquoi la condition de la boucle tant que finit par être fausse et déduire
de la valeur finale de a la taille de la mantisse en mémoire.
b) Ensuite, on peut évaluer le nombre de chiffres sur lequel l’exposant est représenté.
Pour cela, reprendre l’algorithme précédent avec une boucle tant que dont la condition est 2.0∗a ̸ = a. Pour quelle raison cet algorithme finit-il également par s’arrêter ?
Déduire de la dernière valeur prise par a la taille de l’exposant en mémoire. Vérifier
qu’une limite similaire existe pour les exposants négatifs.
c) Les calculatrices possèdent pour la plupart des fonctions qui permettent de vérifier
l’état de la mémoire. À l’aide de ces fonctions, déterminer la place utilisée par la variable a en mémoire : si cette valeur est cohérente avec les résultats des deux questions
précédentes, quelle est l’unité de taille mémoire utilisée ici ?
Sur les calculatrices permettant d’écrire des entiers longs, on vérifiera également la
croissance de la taille mémoire utilisée par un entier en fonction de sa valeur.
5. Certaines calculatrices permettent de faire des calculs symboliques ; elles disposent alors d’entiers longs
similaires à ceux de Python. Une lecture approfondie de la documentation révèle tout de même que le nombre
de chiffres autorisé est borné, par exemple 614 chiffres sur les TI 89 et 92. Un algorithme similaire à celui de la
prochaine question avec des valeurs entières met en lumière cette limitation.
