<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Première/Représentation des réels</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Représentation des nombres réels en machine, virgule fixe et<br/>
virgule flottante, valeurs exactes ou approchées de 0,1,<br/>
0,25 et 1/3, précision et erreurs d'arrondi, conséquences pratiques sur les calculs.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q01 : Type des réels en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel est le type Python utilisé pour représenter les<br/>
nombres à virgule ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les nombres flottants sont <strong>approchés</strong>. Pour des calculs qui<br/>
doivent rester exacts, comme des montants en centimes, on préfère<br/>
travailler avec des entiers (int).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>number</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : number n'est pas un type Python standard.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>int</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : int est le type des entiers en Python.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>float</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : float (« nombre à virgule<br/>
flottante ») est le type Python pour les nombres<br/>
réels approchés. Par défaut, ils sont codés sur 64<br/>
bits selon la norme IEEE 754.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>real</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : real n'existe pas en Python (mais existe<br/>
dans certains autres langages comme Pascal).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q02 : Notation scientifique</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>L'écriture <strong>scientifique</strong> d'un nombre réel sépare un<br/>
réel en :</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En base 2 (binaire), la notation scientifique s'écrit<br/>
m × 2ᵉ, avec une mantisse m entre 1 et 2<br/>
et un exposant e entier. C'est exactement ce que fait<br/>
la norme IEEE 754.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une partie entière et une partie décimale</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est plutôt l'écriture habituelle en base<br/>
10. La notation scientifique factorise en mantisse<br/>
et exposant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une mantisse et un exposant de 10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : par exemple, 345{,}67 = 3{,}4567 \times 10^2.<br/>
La mantisse est 3{,}4567, l'exposant est 2.<br/>
C'est l'idée de base de la représentation à virgule<br/>
flottante (en base 2 pour les ordinateurs).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un signe et une valeur absolue</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une décomposition différente, qui<br/>
n'est pas spécifiquement scientifique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une fraction irréductible</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Une fraction irréductible<br/>
(comme 3/7) est<br/>
une autre façon d'écrire<br/>
un rationnel, mais ce n'est<br/>
pas la notation scientifique<br/>
en base deux utilisée par<br/>
les flottants.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q03 : Norme IEEE 754</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que définit la norme <strong>IEEE 754</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avant IEEE 754, chaque constructeur avait son propre<br/>
format flottant, un même calcul pouvait donner des<br/>
résultats différents selon la machine. La norme a<br/>
uniformisé tout cela.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le format standard des fichiers PDF</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le format PDF est défini par sa propre spécification. Il<br/>
n'a aucun lien avec la norme IEEE 754, qui concerne uniquement<br/>
les nombres flottants.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La connectique des câbles réseau</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun rapport. La connectique des câbles réseau relève<br/>
d'autres normes, sans lien avec la représentation des nombres.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La représentation binaire des flottants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la norme IEEE 754 (1985, révisée<br/>
en 2008 et 2019) standardise les formats de<br/>
flottants : simple précision (float, 32 bits),<br/>
double précision (double, 64 bits) et plus.<br/>
Pratiquement tous les processeurs respectent cette<br/>
norme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le format des adresses IP</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le format des adresses IP est fixé par les protocoles<br/>
d'internet. IEEE 754 concerne les réels.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q04 : Approximation des réels</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi les réels stockés en machine sont-ils en général<br/>
des <strong>approximations</strong> plutôt que des valeurs exactes ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>C'est une limite <strong>fondamentale</strong> : aucun ordinateur,<br/>
quelle que soit sa puissance, ne peut représenter<br/>
exactement tous les réels. Il faut donc choisir un<br/>
compromis sur la précision et l'étendue.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que les ordinateurs sont mal conçus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce n'est pas un défaut de conception, c'est<br/>
une nécessité mathématique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que les flottants sont plus rapides que les entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les flottants sont en réalité plus lents<br/>
que les entiers sur la plupart des processeurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'il faut moins de mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est pour des raisons mathématiques<br/>
fondamentales, pas seulement d'optimisation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Parce qu'il y a une infinité de nombres réels mais une mémoire finie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on ne peut représenter qu'un nombre<br/>
fini de valeurs en mémoire finie. La plupart des<br/>
réels (par exemple π, √2) doivent être<br/>
approchés. Même certains nombres « simples » comme<br/>
0{,}1 n'ont pas de représentation binaire finie.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q05 : Calcul flottant en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que renvoie l'expression Python 0.1 + 0.2 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>0{,}1 en binaire vaut<br/>
0{,}0001100110011\ldots (motif périodique infini).<br/>
L'arrondi à un nombre fini de bits crée une petite<br/>
erreur, qui se propage dans les calculs.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune erreur, le calcul est valide. Mais<br/>
son résultat n'est pas exactement 0{,}3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Exactement 0{,}3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}1 et 0{,}2 n'ont pas de<br/>
représentation binaire <strong>finie</strong> (comme 1/3 en<br/>
base 10). Leur somme contient donc une erreur<br/>
d'arrondi.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Proche de 0{,}3, avec une erreur d'arrondi</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c'est l'exemple emblématique des<br/>
pièges du calcul flottant. Pour comparer des<br/>
flottants, on utilise typiquement<br/>
abs(a - b) &lt; epsilon.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}29999\ldots (donc sans la moindre erreur)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur exacte stockée est légèrement<br/>
<strong>supérieure</strong> à 0{,}3, pas inférieure.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q06 : Comparer deux flottants</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour tester si deux flottants a et b sont « égaux »<br/>
en Python, la bonne pratique est :</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette précaution est essentielle dans tous les calculs<br/>
scientifiques. Les comparaisons strictes de flottants<br/>
sont une source classique de bugs subtils.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>abs(a - b) &lt; epsilon</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on compare l'écart à une <strong>tolérance</strong><br/>
epsilon choisie petite (par exemple 10⁻⁹), au<br/>
lieu d'exiger une égalité exacte. Le choix<br/>
d'epsilon dépend du contexte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>round(a, 2) == round(b, 2)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un arrondi ne joue pas le rôle d'une<br/>
tolérance. Deux flottants très proches mais situés de<br/>
part et d'autre d'une frontière d'arrondi (comme<br/>
1{,}004\,999 et 1{,}005\,001) sont déclarés<br/>
différents, alors que deux valeurs qui s'écartent de<br/>
presque un centième sont déclarées égales.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a == b</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : à cause des erreurs d'arrondi, deux<br/>
flottants qui devraient être égaux peuvent<br/>
légèrement différer. == est trop strict.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>int(a) == int(b)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : int supprime la partie décimale, ce qui ne mesure pas<br/>
l'écart : int(2.1) == int(2.9) vaut True alors que les deux<br/>
flottants diffèrent de 0{,}8.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q07 : Virgule fixe</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la différence entre une représentation à<br/>
<strong>virgule fixe</strong> et une représentation à <strong>virgule flottante</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cas typique de virgule fixe : la finance, où on<br/>
manipule des montants à deux décimales, et on veut<br/>
éviter les erreurs d'arrondi sur l'argent. On stocke<br/>
alors les montants en centimes (entiers).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Fixe = décimales constantes, flottante = précision relative</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avec virgule fixe, par exemple<br/>
deux décimales, on peut représenter 0{,}01 à<br/>
9999{,}99. Avec virgule flottante, l'exposant<br/>
permet d'aller de très petit (10⁻³⁰⁰) à très<br/>
grand (10³⁰⁰), au prix d'une précision relative.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La virgule fixe est plus précise pour les très grands nombres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est plutôt la virgule flottante qui gère<br/>
mieux les très grands ou très petits nombres<br/>
(grâce à l'exposant variable).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune différence en pratique</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les différences sont importantes,<br/>
notamment pour des applications spécifiques.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La virgule fixe n'existe que sur les vieux ordinateurs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la virgule fixe est encore utilisée<br/>
aujourd'hui (par exemple en finance pour des<br/>
montants en centimes).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q08 : Taille d'un float Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En Python, sur combien de bits est stocké un float ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec 64 bits, on ne peut coder qu'un nombre fini de valeurs : la<br/>
plupart des réels, comme 0{,}1, ne sont donc stockés que de façon<br/>
approchée.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>128 bits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la quadruple précision (128 bits) existe<br/>
mais n'est pas le standard de Python.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8 bits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : trop peu pour représenter une plage utile<br/>
de réels.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>32 bits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la <strong>simple précision</strong> (le type<br/>
float du langage C). Python utilise par défaut la<br/>
double précision.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>64 bits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : Python utilise par défaut la double<br/>
précision IEEE 754, soit 64 bits (1 pour le<br/>
signe, 11 pour l'exposant, 52 pour la mantisse).<br/>
Cela donne environ 15 à 17 chiffres décimaux<br/>
significatifs.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q09 : Écrire un quart en base deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est l'écriture en base 2 du nombre décimal 0{,}25 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Après la virgule, les rangs en base 2 valent ½,<br/>
¼, ⅛, etc. Comme 0{,}25 = \frac{1}{4} = 2^{-2},<br/>
son écriture binaire est finie et courte : 0{,}01_2. Ce nombre<br/>
est donc stocké exactement dans un flottant, contrairement à<br/>
0{,}1.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}25_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en base 2, seuls les chiffres 0 et 1 existent. On<br/>
ne recopie pas l'écriture décimale après la virgule.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}11_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}11_2 vaut 0{,}5 + 0{,}25 = 0{,}75. Le rang des<br/>
demis doit rester à 0, puisque 0{,}25 est plus petit qu'un demi.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}1_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}1_2 vaut 2^{-1} = 0{,}5. Le premier chiffre<br/>
après la virgule compte les demis, or 0{,}25 est plus petit<br/>
qu'un demi.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}01_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0{,}25 = \frac{1}{4} = 2^{-2}. On a<br/>
0{,}25 \times 2 = 0{,}5 (chiffre 0), puis 0{,}5 \times 2 = 1 (chiffre 1) : l'écriture s'arrête là.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q10 : Deux assertions sur des moyennes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour tester une fonction moyenne, on exécute le<br/>
programme suivant :</p>
<p>``python<br/>
def moyenne(a, b):<br/>
    return (a + b) / 2</p>
<p>assert moyenne(0.25, 0.75) == 0.5<br/>
assert moyenne(0.1, 0.2) == 0.15<br/>
``</p>
<p>Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un nombre a une écriture binaire finie seulement<br/>
s'il est une somme d'un nombre fini de puissances<br/>
de 2, comme 0{,}75 = 2^{-1} + 2^{-2}. Ce n'est<br/>
pas le cas de 0{,}1 = 0{,}0001100110011\ldots_2,<br/>
qui est arrondi. Pour tester un résultat flottant,<br/>
on compare l'écart à une tolérance :<br/>
assert abs(moyenne(0.1, 0.2) - 0.15) &lt; 1e-9.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La première assertion lève AssertionError et arrête le programme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}25, 0{,}75 et 0{,}5 sont des sommes<br/>
de puissances de 2 (0{,}01_2, 0{,}11_2 et<br/>
0{,}1_2) : ils sont représentés exactement, et<br/>
la première égalité est vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La première assertion est vérifiée, la seconde lève AssertionError</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0{,}25 = 0{,}01_2 et<br/>
0{,}75 = 0{,}11_2 s'écrivent exactement en<br/>
binaire, donc la première moyenne vaut<br/>
exactement 0{,}5. En revanche, 0{,}1 et 0{,}2<br/>
sont arrondis : leur moyenne vaut<br/>
0.15000000000000002, et la seconde égalité est<br/>
fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les deux assertions sont vérifiées, le programme se termine sans erreur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}1 et 0{,}2 n'ont pas d'écriture<br/>
binaire finie, ils sont stockés arrondis. Leur<br/>
moyenne vaut 0.15000000000000002, et l'égalité<br/>
avec 0.15 est fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python refuse d'évaluer == entre deux flottants et lève une erreur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : == s'applique aux flottants comme aux<br/>
entiers. Il est seulement déconseillé, car deux<br/>
calculs censés donner la même valeur peuvent<br/>
différer à cause des arrondis.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q11 : Erreur d'arrondi cumulative</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que peut-il se passer si on additionne plusieurs millions<br/>
de petits flottants entre eux ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un exemple frappant : additionner dix fois 0.1 dans une boucle<br/>
for donne 0.9999999999999999, pas 1{,}0, à cause des erreurs<br/>
cumulées. Pour des montants, on compte en centimes avec des<br/>
entiers.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le résultat est exact, comme une somme d'entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque addition introduit une petite erreur<br/>
d'arrondi. Sur des millions d'opérations, ces<br/>
erreurs s'accumulent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Les erreurs d'arrondi s'accumulent et faussent le résultat</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c'est un piège classique en calcul scientifique.<br/>
Chaque addition arrondit un peu, et sur des millions d'opérations<br/>
ces écarts s'additionnent. Quand c'est possible, on travaille avec<br/>
des entiers, qui restent exacts.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le calcul devient infiniment lent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la vitesse n'est pas l'enjeu. C'est la<br/>
précision qui se dégrade.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python lève une erreur de précision</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune erreur n'est levée. Les calculs<br/>
flottants sont silencieusement approximatifs.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q12 : Un prix calculé qui échappe au test</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme compte les articles vendus 0{,}30 euro :</p>
<p>`<code>python<br/>
prix = [0.1 + 0.2, 0.5, 0.3]<br/>
compte = 0<br/>
for p in prix:<br/>
    if p == 0.3:<br/>
        compte = compte + 1<br/>
print(compte)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le programme illustre la règle : il faut éviter de tester l'égalité<br/>
de deux flottants. Avec la condition abs(p - 0.3) &lt; 1e-9, les<br/>
deux prix de 0{,}30 euro seraient comptés.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'égalité entre flottants n'est pas toujours fausse. Le<br/>
dernier élément de la liste et le littéral 0.3 du test sont<br/>
exactement le même flottant, le test réussit pour ce prix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, car == ne compare pas des flottants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : == s'applique aux flottants et renvoie un booléen. Le<br/>
programme s'exécute sans erreur ; c'est le résultat du test qui<br/>
surprend.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : seul le dernier prix, écrit directement 0.3,<br/>
passe le test. Le premier, calculé, vaut 0.30000000000000004 et<br/>
échoue à l'égalité stricte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0.1 + 0.2 ne vaut pas 0.3 en Python mais<br/>
0.30000000000000004. Le test p == 0.3 est donc faux pour le<br/>
premier prix, et seul le dernier est compté.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q13 : Valeur décimale d'une écriture binaire à virgule</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la valeur décimale du nombre écrit en base 2 :<br/>
110{,}01_2 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque rang a un poids : des puissances de 2 avant la virgule, puis<br/>
½, ¼, ⅛ après. On additionne<br/>
les poids des chiffres 1 : 4 + 2 + \frac{1}{4} = 6{,}25.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6{,}5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}01_2 n'est pas un demi. Chaque rang après la<br/>
virgule a son poids, ½, ¼, ⅛,<br/>
d'où 0{,}25.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3{,}25</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a lu la partie entière à l'envers, comme<br/>
011₂ = 3. Le chiffre de gauche a le poids le plus fort :<br/>
110₂ = 4 + 2 = 6.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6{,}01</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la partie entière 110₂ = 6 est juste, mais les<br/>
chiffres après la virgule ne se recopient pas : 0{,}01_2 vaut<br/>
0{,}25.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>6{,}25</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 110₂ = 4 + 2 = 6 et<br/>
0{,}01_2 = 0 \times \frac{1}{2} + 1 \times \frac{1}{4} = 0{,}25,<br/>
soit 6{,}25.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q15 : Calcul financier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour un calcul financier (additionner des centimes),<br/>
quel choix est le plus prudent en Python ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les erreurs d'arrondi des float sont inacceptables pour des<br/>
montants : la précision doit être garantie au centime. Compter en<br/>
centimes avec des entiers supprime le problème.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Stocker les montants en centimes entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les entiers sont exacts en Python. On compte en<br/>
centimes et on ne convertit en euros qu'au moment de l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Utiliser des nombres complexes en Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun rapport avec les nombres complexes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Utiliser des float</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les flottants accumulent des erreurs<br/>
d'arrondi qui peuvent fausser des montants en<br/>
centimes. Mauvaise pratique financière.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Utiliser des chaînes de caractères</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on ne peut pas faire d'arithmétique<br/>
directement sur des chaînes en Python.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q16 : Conversion entier vers flottant</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En Python, l'instruction float(7) renvoie :</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Inversement, int(7.9) renvoie 7 (troncature, pas<br/>
arrondi). Pour arrondir, on utilise round(7.9) qui<br/>
renvoie 8.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7 (entier inchangé)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la fonction float change le type. Le<br/>
résultat est 7.0, qui est un flottant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>'7' (chaîne de caractères)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : float() convertit en flottant, pas en<br/>
chaîne. Pour une chaîne, on utiliserait str(7).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>7.0 (flottant)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la conversion d'un entier en<br/>
flottant ajoute « .0 ». Le type passe de int à<br/>
float.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune erreur, c'est une conversion<br/>
standard.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q17 : Perte de signification</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi (1e16 + 1) - 1e16 donne-t-il 0 en Python<br/>
au lieu de 1 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour éviter ce piège : reformuler les calculs pour<br/>
éviter de soustraire des nombres très proches, ou<br/>
passer en précision étendue. C'est un problème<br/>
classique du calcul numérique scientifique.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>1 est négligeable face à 10¹⁶ pour la mantisse</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la double précision a environ 16<br/>
chiffres significatifs. Quand on ajoute 1 à<br/>
10¹⁶, le 1 est « écrasé » par les erreurs<br/>
d'arrondi. C'est la <strong>perte de signification</strong><br/>
(<em>loss of significance</em>).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>C'est un bug de Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce n'est pas un bug, c'est un comportement<br/>
attendu et défini par IEEE 754.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que les nombres trop grands sont arrondis à zéro</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce n'est pas l'arrondi à zéro, c'est plus<br/>
subtil : c'est la précision relative limitée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que Python ne sait pas additionner</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python sait additionner. La limitation<br/>
vient du format de représentation des flottants.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q18 : Les premiers chiffres binaires de 0,1</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On écrit 0{,}1 en base 2 en multipliant la partie<br/>
décimale par 2 et en notant à chaque fois la partie<br/>
entière obtenue. Quels sont les <strong>six premiers chiffres</strong><br/>
après la virgule ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Après le sixième chiffre, on retrouve 0{,}4, déjà<br/>
rencontré : les chiffres 0011 se répètent sans fin,<br/>
0{,}1 = 0{,}0\,0011\,0011\,0011\ldots_2. Un flottant n'en<br/>
garde qu'un nombre fini.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}000101_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après 1{,}6, on garde 0{,}6, et<br/>
0{,}6 \times 2 = 1{,}2 donne encore un chiffre 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}000110_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0{,}2 (0), 0{,}4 (0), 0{,}8 (0),<br/>
1{,}6 (1), 1{,}2 (1), 0{,}4 (0).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}000111_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le sixième produit est 0{,}2 \times 2 = 0{,}4,<br/>
dont la partie entière est 0, pas 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}001100_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il manque un 0 au début ; 0{,}1 \times 2,<br/>
0{,}2 \times 2 et 0{,}4 \times 2 donnent trois<br/>
chiffres 0.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q19 : Non-associativité de l'addition flottante</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En arithmétique flottante, l'addition est-elle toujours<br/>
<strong>associative</strong> (c'est-à-dire (a + b) + c = a + (b + c)) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette non-associativité a des implications concrètes :<br/>
en parallélisme, des sommes massives peuvent donner<br/>
des résultats légèrement différents selon l'ordre de<br/>
réduction. En science du calcul, on cherche des<br/>
algorithmes qui minimisent cette dépendance.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Cela dépend du système d'exploitation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas de lien avec le système.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Non, l'ordre des additions change le résultat</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : par exemple,<br/>
(1e16 + 1) - 1e16 = 0 mais (1e16 - 1e16) + 1 = 1.<br/>
Ce détail est crucial en programmation parallèle :<br/>
additionner dans un ordre différent peut donner un<br/>
résultat différent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Cela dépend du langage de programmation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une propriété de la norme IEEE 754,<br/>
indépendante du langage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, exactement comme pour les entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une croyance répandue mais fausse !<br/>
À cause des arrondis, l'ordre des additions peut<br/>
changer le résultat.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q20 : Décimal vs binaire</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi 0{,}5 a une représentation binaire <strong>exacte</strong>,<br/>
mais pas 0{,}1 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>C'est l'analogue de 1/3 = 0{,}333\ldots en base 10. Toute base<br/>
privilégie certaines fractions et en désavantage d'autres. Pour des<br/>
montants, compter en centimes avec des entiers évite ce problème.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que 0{,}5 a un seul chiffre, 0{,}1 aussi</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est en base 10. En binaire, la<br/>
longueur des deux écritures est très différente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que 0{,}5 est plus grand que 0{,}1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune raison liée à la taille relative.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que 0{,}5 est utilisé plus souvent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la fréquence d'usage n'a rien à voir avec<br/>
la représentabilité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}5 = 2^{-1} est une puissance de 2, pas 0{,}1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : en base 2, seules les fractions<br/>
dont le dénominateur est une puissance de 2<br/>
(ou des sommes de telles fractions) ont une<br/>
représentation <strong>finie</strong>. Pour 1/10, on obtient<br/>
0{,}0001100110011\ldots_2, périodique infini.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q23 : Propagation des erreurs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avec des flottants, quel calcul fait perdre le plus de chiffres<br/>
significatifs exacts parmi les suivants ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Exemple : en Python, 1.0000001 - 1.0 affiche<br/>
1.0000000005838672e-07 au lieu de 1e-07. Les chiffres de tête<br/>
communs s'annulent, et il ne reste que des chiffres dont une partie<br/>
provient des erreurs d'arrondi.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>a - b avec a et b très proches</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : si a et b sont très proches,<br/>
leur différence a beaucoup moins de chiffres<br/>
significatifs que a ou b. Les erreurs d'arrondi<br/>
deviennent dominantes par rapport au résultat.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a × b pour a et b proches de 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : multiplier deux nombres proches de 1 donne un résultat<br/>
proche de 1, dont les erreurs d'arrondi restent du même ordre que<br/>
celles des facteurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a / b quand b est grand</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : diviser par un grand nombre donne un petit résultat, mais<br/>
ses chiffres significatifs restent aussi exacts que ceux de a et<br/>
b.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a + b pour a et b de même signe</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ajouter deux nombres de même signe conserve les premiers<br/>
chiffres du résultat ; les erreurs d'arrondi restent petites<br/>
devant lui.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q24 : Une tolérance mal dimensionnée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sarah compare deux flottants avec une tolérance fixe :<br/>
``python<br/>
def proches(a, b):<br/>
    return abs(a - b) &lt; 1e-9</p>
<p>print(proches(1e-12, 2e-12))<br/>
<code><br/>
Le programme affiche True, alors que 2e-12 est le<br/>
double de 1e-12</code>. Comment expliquer ce résultat ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une tolérance absolue ne vaut que pour un ordre de grandeur<br/>
donné : 10⁻⁹ convient pour des valeurs proches de 1,<br/>
mais tout écart entre des valeurs de l'ordre de 10⁻¹²<br/>
lui est inférieur. Quand l'ordre de grandeur n'est pas connu<br/>
d'avance, on compare l'écart à une fraction des valeurs<br/>
elles-mêmes (tolérance relative).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le test est correct, car deux flottants qui diffèrent de moins de 10⁻⁹ sont indiscernables pour la machine</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la machine distingue parfaitement 1e-12 et<br/>
2e-12 ; l'indiscernabilité ne concerne que des écarts<br/>
relatifs de l'ordre de 10⁻¹⁶. C'est le seuil choisi<br/>
par Sarah qui est inadapté, pas la représentation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La tolérance 10⁻⁹ est énorme devant les valeurs comparées, il faut l'adapter à leur ordre de grandeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'écart réel vaut 10⁻¹², mille fois<br/>
plus petit que la tolérance, donc le test réussit quelle<br/>
que soit la différence entre a et b. Une tolérance<br/>
fixe n'a de sens que pour des valeurs d'ordre de grandeur<br/>
connu ; sinon, on la rend relative, par exemple<br/>
abs(a - b) &lt; 1e-9 * abs(b), qui renvoie ici False.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les deux valeurs sont plus petites que le plus petit flottant représentable et valent donc toutes deux 0.0 en machine</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un flottant 64 bits descend jusqu'à environ<br/>
10⁻³⁰⁸, bien en dessous de 10⁻¹². Les deux<br/>
valeurs sont représentées et distinctes : 1e-12 == 2e-12<br/>
renvoie False.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La soustraction de deux flottants aussi proches subit une annulation et renvoie exactement 0.0, d'où un écart nul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 1e-12 - 2e-12 renvoie -1e-12, un écart non<br/>
nul. L'annulation qui menace une soustraction concerne<br/>
des valeurs presque égales, pas des valeurs du simple au<br/>
double.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q25 : Synthèse sur les flottants</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi les énoncés suivants, lequel est <strong>vrai</strong> sur les<br/>
nombres flottants en machine ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Connaître les flottants permet d'éviter des bugs<br/>
subtils mais critiques dans les calculs scientifiques,<br/>
financiers, et même dans des programmes ordinaires<br/>
qui manipulent des nombres réels.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le test == entre flottants est piégeux, préférer une tolérance</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c'est l'enseignement le plus<br/>
pratique de tout ce chapitre. À cause des erreurs<br/>
d'arrondi, deux flottants qui devraient être égaux<br/>
peuvent légèrement différer. Toujours préférer une<br/>
comparaison à une tolérance, du type<br/>
abs(a - b) &lt; epsilon.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La précision des flottants augmente avec la taille du nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la précision <strong>relative</strong> est constante,<br/>
mais l'erreur <strong>absolue</strong> augmente avec la taille<br/>
du nombre. Plus un nombre est grand, plus l'écart<br/>
entre deux flottants consécutifs est grand.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les calculs flottants sont aussi précis que les calculs sur papier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a vu de nombreux contre-exemples<br/>
(associativité, perte de signification, etc.). Les<br/>
calculs flottants sont approchés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les flottants peuvent représenter exactement tous les nombres rationnels</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la plupart des rationnels (par exemple<br/>
1/3, 1/10) n'ont pas de représentation finie<br/>
en binaire. Seul un sous-ensemble fini est<br/>
exactement représenté.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q26 : Conversion décimal vers binaire avec virgule</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est l'écriture binaire de 6{,}625 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Méthode pour la partie fractionnaire : on multiplie par 2<br/>
et on note la partie entière du résultat (bit 0 ou 1),<br/>
puis on continue avec la partie fractionnaire restante,<br/>
jusqu'à obtenir 0 ou repérer un cycle. Pour 0{,}625, on<br/>
obtient 0{,}101_2 exactement, car 0{,}625 = 0{,}5 + 0{,}125 = 2^{-1} + 2^{-3}.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>110{,}101</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la partie entière donne 6 = 110₂. La<br/>
partie fractionnaire se calcule par multiplications<br/>
successives par 2 : 0{,}625 \times 2 = 1{,}25 (bit 1), puis 0{,}25 \times 2 = 0{,}5 (bit 0), puis 0{,}5 \times 2 = 1{,}0 (bit 1). On obtient<br/>
0{,}101_2, d'où 110{,}101_2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>110{,}625</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a juxtaposé l'écriture décimale de la partie<br/>
fractionnaire à la partie entière en binaire. La partie<br/>
décimale doit elle aussi être convertie en base 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1010{,}101</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 1010₂ = 10, pas 6. Confusion sur la partie<br/>
entière : 6 = 4 + 2 = 110₂.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>110{,}100</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}100_2 vaut 0{,}5, ce qui ne correspond pas<br/>
à 0{,}625. Il faut poursuivre les multiplications par 2<br/>
jusqu'à épuiser la partie fractionnaire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q27 : Décimal sans écriture binaire finie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi les réels suivants (écrits en base 10), lequel n'a<br/>
<strong>pas</strong> une écriture finie en base 2 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un nombre décimal p/q irréductible a une<br/>
écriture binaire finie si et seulement si q est une<br/>
puissance de 2. Pour 0{,}1 = \dfrac{1}{10},<br/>
q = 10 = 2 × 5 contient un facteur 5, ce qui<br/>
provoque le caractère infini en base 2. Cette<br/>
observation explique pourquoi tant de calculs simples en<br/>
apparence (0{,}1 + 0{,}2) deviennent imprécis sur<br/>
machine.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}5 = 2^{-1}, donc son écriture binaire est<br/>
0{,}1_2, finie sur un seul bit fractionnaire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}75</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}75 = 0{,}5 + 0{,}25 = 2^{-1} + 2^{-2},<br/>
donc son écriture binaire est 0{,}11_2, finie sur<br/>
deux bits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0{,}1 ne s'exprime pas comme une somme<br/>
finie de puissances négatives de 2. Son écriture<br/>
binaire est périodique :<br/>
0{,}0001100110011\ldots_2. C'est précisément la cause<br/>
de l'écart entre 0.1 + 0.2 et 0.3 en flottant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}25</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}25 = 2^{-2}, donc son écriture binaire est<br/>
0{,}01_2, finie sur deux bits.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q28 : Un tiers écrit en base deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En appliquant la méthode des multiplications par 2 à<br/>
⅓, quelle écriture binaire obtient-on ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>⅓ n'a d'écriture finie ni en base 10<br/>
(0{,}333\ldots) ni en base 2 (0{,}0101\ldots_2) : un<br/>
flottant ne peut en stocker qu'une valeur approchée.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}0011_2 exactement, sur quatre chiffres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}0011_2 = 0{,}1875, bien loin de<br/>
⅓ ; le premier produit ⅔ donne<br/>
0, le deuxième 4/3 donne déjà 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}0110\ldots_2, le motif 011 se répétant sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après le chiffre 1, il reste ⅓ ;<br/>
le chiffre suivant est donc 0, pas 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}0101\ldots_2, le motif 01 se répétant sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ⅔ (0), puis<br/>
4/3 (1, reste ⅓), et l'on<br/>
revient au départ.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}0101_2 exactement, sur quatre chiffres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}0101_2 = 0{,}3125, qui n'est qu'une valeur<br/>
approchée de ⅓ ; le calcul ne s'arrête jamais.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q29 : Arrondir 0,1 sur quatre chiffres binaires</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Une machine ne garde que <strong>quatre chiffres binaires</strong> après la<br/>
virgule. Parmi les nombres qu'elle peut représenter, lequel est<br/>
le plus proche de 0{,}1 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une machine qui arrondit au plus proche ne tronque pas : la valeur<br/>
stockée peut être plus grande que le nombre de départ. Les<br/>
flottants de Python arrondissent ainsi, sur 52 chiffres.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}1, soit 0{,}0001_2 exactement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}0001_2 vaut \frac{1}{16} = 0{,}0625 ; 0{,}1<br/>
n'a pas d'écriture binaire finie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}125, soit 0{,}0010_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avec quatre chiffres, les valeurs vont de<br/>
0{,}0625 en 0{,}0625 ; 0{,}125 est la plus proche de<br/>
0{,}1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}25, soit 0{,}0100_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}25 est à 0{,}15 de 0{,}1, bien plus loin que<br/>
0{,}125.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}0625, soit 0{,}0001_2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la troncature de 0{,}1, à 0{,}0375 de lui ;<br/>
0{,}125 n'en est qu'à 0{,}025.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q30 : Une égalité de flottants qui tient</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Laquelle de ces expressions Python vaut True ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un calcul sur des sommes de puissances de 2 (0{,}5,<br/>
0{,}25, 0{,}125) reste exact ; dès qu'un nombre comme<br/>
0{,}1 intervient, le résultat n'est qu'approché.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>1.5 - 0.25 == 1.25</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 1{,}5 = 2^0 + 2^{-1} et 0{,}25 = 2^{-2}<br/>
sont représentés exactement, la différence aussi.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0.1 * 3 == 0.3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0.1 * 3 vaut 0.30000000000000004, l'erreur<br/>
sur 0.1 est multipliée par trois.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0.7 + 0.1 == 0.8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0.7 + 0.1 vaut 0.7999999999999999, à cause<br/>
des approximations de 0.7 et de 0.1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0.1 + 0.2 == 0.3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0.1 et 0.2 sont approchés en binaire, la<br/>
somme vaut 0.30000000000000004.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q31 : Afficher un tiers en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que produit l'instruction print(1 / 3) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>⅓ n'a pas d'écriture finie en base 2 : le<br/>
flottant stocké en est une valeur approchée, et l'affichage<br/>
le montre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0.33, la valeur arrondie au centième</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python n'arrondit pas l'affichage à deux<br/>
chiffres, sauf si on le lui demande avec round.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1/3, la fraction exacte gardée en mémoire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'opérateur / renvoie un float, jamais une<br/>
fraction.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0.333…, avec des chiffres qui défilent sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un flottant occupe 64 bits ; il ne peut pas<br/>
contenir une infinité de chiffres.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0.3333333333333333, une valeur approchée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le flottant ne garde qu'un nombre fini de<br/>
chiffres binaires, Python en affiche environ seize<br/>
chiffres décimaux.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q32 : Approcher un tiers sur quatre chiffres binaires</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On ne dispose que de <strong>quatre chiffres binaires</strong> après la<br/>
virgule et l'on tronque l'écriture de ⅓, qui<br/>
commence par 0{,}0101\,0101\ldots_2. Quelle valeur<br/>
décimale obtient-on ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec quatre chiffres, l'erreur peut atteindre<br/>
2^{-4} = 0{,}0625 ; un float, avec ses 52 chiffres,<br/>
ramène l'erreur vers 10⁻¹⁷, sans l'annuler.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}3125</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0{,}0101_2 = \frac{1}{4} + \frac{1}{16}<br/>
= 0{,}3125, à environ 0{,}02 de ⅓.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}1875</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est 0{,}0011_2 ; les chiffres ont été pris<br/>
dans le mauvais ordre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}625</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est 0{,}1010_2 ; le premier chiffre après la<br/>
virgule de ⅓ est 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}375</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est 0{,}0110_2, une valeur plus grande que<br/>
⅓ ; tronquer donne toujours une valeur plus<br/>
petite.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q33 : Trois fois un dixième</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut 0.1 * 3 == 0.3 en Python ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tester l'égalité de deux flottants est presque toujours une erreur.<br/>
On compare plutôt leur écart à une tolérance.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>False, le produit valant 0.30000000000000004</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ni 0{,}1 ni 0{,}3 ne sont représentables<br/>
exactement en binaire. Les erreurs ne se compensent pas et le<br/>
produit diffère de 0.3 au seizième chiffre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, un flottant ne pouvant être comparé avec ==</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la comparaison est permise, elle est seulement peu<br/>
fiable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>True, le calcul étant exact en décimal comme en binaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0.1 est déjà une approximation de 0{,}1 ; la<br/>
multiplier par 3 ne redonne pas l'approximation de 0{,}3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0.3, la valeur commune des deux membres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une comparaison renvoie un booléen, et les deux membres<br/>
ne sont d'ailleurs pas égaux.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q34 : Une boucle qui ne rencontre jamais un</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que se passe-t-il à l'exécution de ce programme ?<br/>
`<code>python<br/>
x = 0<br/>
while x != 1:<br/>
    x = x + 0.1<br/>
print("fini")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle while sur un flottant doit utiliser &lt; ou &lt;=, jamais<br/>
!= ou == : l'égalité exacte n'est pas atteignable.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il affiche fini après dix tours, x valant alors exactement 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après dix tours, x vaut 0.9999999999999999, pas<br/>
1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La boucle ne s'arrête jamais, x n'égalant jamais 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : dix additions de 0.1 donnent<br/>
0.9999999999999999, puis x dépasse 1 sans jamais l'égaler.<br/>
La condition reste vraie indéfiniment.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, != n'acceptant pas un entier et un flottant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la comparaison est valide ; le problème est qu'elle ne<br/>
devient jamais fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il affiche fini après onze tours, x dépassant alors 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : au onzième tour x vaut environ 1.0999999999999999,<br/>
toujours différent de 1.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q35 : Un entier qui n'est pas celui attendu</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut int((0.1 + 0.7) * 10) en Python ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tronquer un flottant proche d'un entier est un piège classique :<br/>
round est plus sûr que int quand on attend une valeur entière.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, int ne s'appliquant qu'aux chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : int accepte un flottant et le tronque.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8, le calcul tombant juste sur un entier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le calcul tombe juste en décimal, pas en binaire. Le<br/>
résultat est légèrement inférieur à 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>7, le produit valant 7.999999999999999</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0.1 + 0.7 vaut 0.7999999999999999, un peu<br/>
moins que 0{,}8 ; multiplié par 10, le résultat reste sous<br/>
8, et int tronque à 7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8.0, int conservant un flottant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : int renvoie toujours un entier.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q36 : Un affichage plus exact que la valeur stockée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>0.1 n'est pas représentable exactement en binaire, et pourtant<br/>
print(0.1) affiche 0.1. Pourquoi ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'affichage d'un flottant est une écriture décimale choisie pour<br/>
être courte et sans ambiguïté. Il ne dit rien de l'exactitude de<br/>
la valeur stockée.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python affiche la plus courte écriture qui redonne le même flottant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la valeur stockée est<br/>
0{,}1000000000000000055\ldots, mais 0.1 suffit à la<br/>
désigner sans ambiguïté, et c'est cette écriture courte qui est<br/>
affichée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que l'erreur de représentation est corrigée à l'affichage</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : rien n'est corrigé, la valeur stockée reste inexacte ;<br/>
seule son écriture est raccourcie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que print arrondit toujours à un chiffre après la virgule</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print(0.30000000000000004) affiche bien dix-sept<br/>
chiffres ; l'arrondi dépend de ce qui suffit à retrouver la<br/>
valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que 0.1 est stocké exactement, contrairement à 0.3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun des deux n'est exact ; 0{,}1 est une fraction<br/>
dont le dénominateur n'est pas une puissance de 2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q37 : Combien de flottants entre un et deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En double précision, la mantisse compte 52 bits après la virgule.<br/>
Combien de flottants distincts sont compris entre 1 inclus et 2<br/>
exclu ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les flottants forment un ensemble fini et irrégulier : autant de<br/>
valeurs entre 1 et 2 qu'entre 1024 et 2048, mais bien plus<br/>
espacées dans le second cas.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2⁶⁴, le nombre total de flottants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 2⁶⁴ est le nombre de mots de 64 bits, répartis<br/>
sur toutes les puissances de deux, pas seulement entre 1 et<br/>
2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1000, un par millième entre les deux bornes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le pas des flottants n'est pas décimal ; entre 1 et<br/>
2 il vaut 2⁻⁵², bien plus fin qu'un millième.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2⁵², un par mantisse possible</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : entre 1 et 2, l'exposant est fixé à 0 et<br/>
seule la mantisse varie, sur 52 bits : 2⁵² valeurs,<br/>
régulièrement espacées de 2⁻⁵².</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une infinité, comme pour les réels</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un flottant occupe 64 bits, donc il n'existe qu'un<br/>
nombre fini de valeurs, et une infinité de réels sont<br/>
inaccessibles.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q38 : Pas et maximum d'une virgule fixe</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un nombre est codé en virgule fixe sur 8 bits, dont 4 pour la<br/>
partie entière et 4 pour la partie fractionnaire. Quel est<br/>
l'écart entre deux valeurs consécutives, et quelle est la plus<br/>
grande valeur codable ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En virgule fixe, le nombre de bits fractionnaires fixe la<br/>
précision, le nombre de bits entiers fixe la plage. Augmenter l'un<br/>
réduit l'autre : c'est la limite que lève la virgule flottante.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un pas de 0{,}0625 et un maximum de 16</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 16 = 2⁴ n'est pas codable : avec 4<br/>
bits entiers, le maximum est 2⁴ moins un pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un pas de 0{,}0625 et un maximum de 15{,}9375</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le dernier bit fractionnaire pèse 2^{-4} =<br/>
0{,}0625, et le maximum, tous bits à 1, vaut 2^{4} - 0{,}0625 =<br/>
15{,}9375.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un pas de 0{,}25 et un maximum de 15{,}9375</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le pas est le poids du bit le plus à droite,<br/>
2⁻⁴, et non 1/4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un pas de 1 et un maximum de 255</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait un entier non signé sur 8 bits, sans partie<br/>
fractionnaire.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q39 : Une puissance de dix en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut 1e3 en Python ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>3.5e-2 vaut 0{,}035 et 6e23 vaut 6 × 10²³ : la<br/>
notation scientifique s'écrit avec e et produit un flottant.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>13</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : e ne concatène pas des chiffres, il introduit un<br/>
exposant de 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>1000.0, un flottant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 1e3 signifie 1 × 10³ et cette<br/>
notation produit toujours un flottant, même pour une valeur<br/>
entière.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, e n'étant pas un chiffre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 1e3 est une écriture valide, la notation scientifique<br/>
de Python.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1000, un entier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la notation avec e donne un float, pas un int.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q40 : Écrire un test d'égalité avec tolérance</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle expression teste correctement que deux flottants a et b<br/>
sont égaux à 10⁻⁹ près ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Comparer des flottants, c'est comparer leur écart à un seuil ;<br/>
la valeur absolue évite le piège du signe.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>round(a) == round(b)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : arrondir à l'entier confond 1{,}4 et 0{,}6.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a == b ou a - b == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : deux écritures du test exact, qui échoue sur<br/>
0{,}1 + 0{,}2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>abs(a) - abs(b) &lt; 1e-9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce test compare des valeurs absolues ; -1 et 1<br/>
passeraient pour égaux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>abs(a - b) &lt; 1e-9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la valeur absolue rend le test symétrique, que<br/>
a soit un peu au-dessus ou un peu en dessous de b.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q41 : Calculer des montants sans erreur d'arrondi</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme de caisse additionne des prix en euros et des<br/>
centimes. Comment éviter les erreurs d'arrondi des flottants ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dès qu'un calcul exige l'exactitude, argent, comptage, on choisit<br/>
une unité entière plutôt qu'un flottant.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Utiliser des flottants en double précision, plus précis</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les flottants de Python sont déjà en double précision,<br/>
et 0{,}1 n'y est pas exact.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Compter en centimes avec des entiers, exacts par nature</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 12{,}30 € devient 1230 centimes ; les<br/>
additions d'entiers sont exactes, et l'on ne divise par 100<br/>
qu'à l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Arrondir le total à deux décimales après chaque addition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque arrondi corrige un peu, mais les erreurs<br/>
peuvent s'accumuler sur des milliers d'opérations.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Convertir chaque prix en chaîne avant de l'additionner</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on ne peut pas additionner des chaînes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q42 : Lesquels sont représentés exactement</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi 0{,}1, 0{,}25 et ⅓, lesquels un<br/>
flottant représente-t-il <strong>exactement</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un réel est représenté exactement quand il s'écrit comme<br/>
une somme finie de puissances de 2 (dans les limites du<br/>
format) : 0{,}25, 0{,}5 ou 0{,}375 le sont, pas<br/>
0{,}1 ni ⅓.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0{,}25 seulement, qui vaut une puissance de 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 0{,}25 = 2^{-2} = 0{,}01_2 ; les deux<br/>
autres ont une écriture binaire infinie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucun, un flottant n'étant jamais qu'une valeur approchée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les nombres qui s'écrivent avec un nombre fini<br/>
de chiffres binaires, comme 0{,}25, sont stockés sans<br/>
erreur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0{,}1 et 0{,}25, qui s'écrivent avec peu de décimales</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une écriture décimale finie ne suffit pas ;<br/>
0{,}1 a une écriture binaire infinie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les trois, puisqu'un flottant occupe 64 bits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0{,}1 et ⅓ demanderaient une<br/>
infinité de chiffres binaires ; 64 bits n'y suffisent<br/>
pas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Représentation des réels — Q43 : Le bit de signe d'un flottant</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment le signe d'un flottant est-il codé en IEEE 754 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Signe, exposant, mantisse : les trois champs d'un flottant, le<br/>
premier ne prenant qu'un bit.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Par le signe de l'exposant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'exposant dit si le nombre est grand ou petit, pas<br/>
s'il est négatif.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Par un seul bit, 1 pour un nombre négatif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le premier bit du codage vaut 0 pour un<br/>
positif et 1 pour un négatif ; mantisse et exposant codent la<br/>
valeur absolue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Par le complément à deux de la mantisse</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le complément à deux concerne les entiers, pas les<br/>
flottants.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Par un seul bit, 1 pour un nombre positif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la convention est inverse, 1 signale un négatif.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
