<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Première/Numération et représentation des entiers</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Systèmes de numération positionnels (binaire, décimal, hexadécimal),<br/>
conversions entre bases, opérations sur les entiers naturels,<br/>
représentation des entiers relatifs en complément à deux,<br/>
dépassement de capacité, applications (couleurs, adresses mémoire).</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q01 : Définition d'un bit</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que désigne précisément le mot <strong>bit</strong> en informatique ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le bit est l'unité élémentaire d'information en numérique.<br/>
Huit bits forment un octet. Les capacités de stockage usuelles<br/>
sont mesurées en octets, kilo-octets, méga-octets, etc.</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 groupe de huit chiffres binaires</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un groupe de huit chiffres binaires s'appelle un<br/>
<strong>octet</strong> (en anglais <em>byte</em>), pas un bit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une unité de mesure de la mémoire vive</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le bit est plutôt l'unité élémentaire d'information.<br/>
La mémoire vive se mesure en octets, kilo-octets,<br/>
giga-octets, etc.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un chiffre binaire pouvant valoir $0$ ou $1$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : « bit » est la contraction de<br/>
<em>binary digit</em>. C'est l'unité élémentaire d'information,<br/>
qui ne peut prendre que deux valeurs $0$ ou $1$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un nombre hexadécimal sur quatre chiffres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un chiffre hexadécimal correspond à quatre bits,<br/>
mais le bit lui-même est l'unité de base, pas un nombre<br/>
hexadécimal.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q02 : Symboles du système hexadécimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de symboles différents utilise le système hexadécimal<br/>
(base $16$) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'hexadécimal est très utilisé en informatique pour sa<br/>
compacité : un chiffre hexadécimal correspond à exactement<br/>
quatre bits, soit la moitié d'un octet. Cela rend la lecture<br/>
des données binaires beaucoup plus aisé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>$10$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le nombre de symboles du système décimal<br/>
(base $10$). En hexadécimal, on a besoin de symboles<br/>
supplémentaires pour représenter $10, 11, \ldots, 15$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$16$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la base $16$ utilise $16$ symboles, à savoir<br/>
les chiffres $0$ à $9$ pour les valeurs $0$ à $9$, puis les<br/>
lettres A, B, C, D, E, F pour les valeurs $10$ à $15$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le nombre de symboles de la base $2$ (le<br/>
binaire), pas de la base $16$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$26$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion possible avec le nombre de lettres de<br/>
l'alphabet. L'hexadécimal utilise $10$ chiffres et $6$<br/>
lettres, soit $16$ symboles au total.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q03 : Conversion binaire vers décimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut $1011_2$ en base décimale ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Méthode : pour convertir un binaire en décimal, on associe à<br/>
chaque bit une puissance de $2$ (en partant de la droite à<br/>
$2^0$) et on additionne les puissances correspondant aux bits<br/>
à $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="100" format="html">
    <text><![CDATA[<p>$11$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $1011_2 = 1 \cdot 8 + 0 \cdot 4 + 1 \cdot 2 + 1 \cdot 1 = 11_{10}$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$13$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion possible avec $1101_2$. Bien lire les<br/>
bits de gauche à droite et associer chacun à sa puissance<br/>
de $2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$14$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : possible erreur de calcul ou décalage. Vérifier en<br/>
additionnant : $1011_2 = 8 + 2 + 1 = 11$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$1011$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait la lecture comme un nombre décimal. Or<br/>
en base $2$, chaque position a un poids différent<br/>
(puissance de $2$, pas de $10$).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q04 : Conversion décimal vers binaire</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est l'écriture binaire (sur quatre bits) de l'entier<br/>
$10$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Méthode des divisions successives par $2$ : $10 = 5 \times 2 + 0$,<br/>
$5 = 2 \times 2 + 1$, $2 = 1 \times 2 + 0$, $1 = 0 \times 2 + 1$.<br/>
On lit les restes de bas en haut : $1010_2$.</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>$1010_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $10 = 8 + 2 = 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0 = 1010_2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$0010_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est $2_{10}$. Confusion possible entre la<br/>
lecture de l'écriture décimale $10$ et la valeur binaire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$1100_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est $12_{10}$, pas $10$. Vérifier en<br/>
décomposant : $1100_2 = 8 + 4 = 12$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$0101_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est $5_{10}$, pas $10$. Possible inversion des<br/>
bits (lecture dans le mauvais sens).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q05 : Composition d'un octet</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de bits contient un octet ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le nom <em>octet</em> renvoie directement à « huit ». Le mot anglais<br/>
<em>byte</em> est utilisé dans la plupart des langages de<br/>
programmation.</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>$4$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $4$ bits forment un demi-octet (parfois appelé<br/>
<em>quartet</em> ou <em>nibble</em>), équivalent à un chiffre hexadécimal.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$8$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : un octet (en anglais <em>byte</em>) est un groupe<br/>
de huit bits. Il peut représenter $2^8 = 256$ valeurs<br/>
différentes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$1$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul bit ne forme pas un octet. Un bit est<br/>
l'unité élémentaire d'information.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$16$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $16$ bits forment deux octets, soit un <em>short</em> ou<br/>
<em>word</em> selon les architectures.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q06 : Plus grand entier naturel sur un octet</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel est le plus grand entier naturel que l'on peut représenter<br/>
sur un octet (huit bits) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur $n$ bits, on peut coder $2^n$ valeurs différentes, soit les<br/>
entiers naturels de $0$ à $2^n - 1$. Pour $n = 8$, c'est de $0$<br/>
à $255$.</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$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $128$ est le seuil entre nombres positifs et<br/>
négatifs en complément à deux, mais ce n'est pas le<br/>
maximum d'un entier naturel sur un octet.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$255$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sur huit bits, on peut coder les entiers<br/>
naturels de $0$ à $2^8 - 1 = 255$. Le maximum correspond à<br/>
$11111111_2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$511$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $511 = 2^9 - 1$ est le maximum sur <strong>neuf</strong> bits,<br/>
pas huit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$256$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un octet permet $256$ valeurs <strong>différentes</strong> (de<br/>
$0$ à $255$), mais pas la valeur $256$ elle-même.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q07 : Préfixes des bases en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En Python, quel préfixe utilise-t-on pour écrire un littéral<br/>
hexadécimal ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Python accepte trois préfixes : <code>0b</code> (binaire), <code>0o</code> (octal) et<br/>
<code>0x</code> (hexadécimal). On peut aussi utiliser <code>int("FF", 16)</code> pour<br/>
convertir une chaîne en entier dans une base donné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><code>0o</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>0o</code> est le préfixe pour l'<strong>octal</strong> (base $8$),<br/>
rarement utilisé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0b</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>0b</code> est le préfixe pour le <strong>binaire</strong> (par<br/>
exemple <code>0b101 == 5</code>).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0h</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>0h</code> n'est pas un préfixe valide en Python. Cela<br/>
provoquerait une erreur de syntaxe.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>0x</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>0x</code> introduit un littéral hexadécimal.<br/>
Par exemple <code>0xFF == 255</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q08 : Bits par chiffre hexadécimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de bits sont nécessaires pour coder un chiffre<br/>
hexadécimal ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette correspondance exacte (un chiffre hexa = quatre bits) est<br/>
très pratique : pour convertir entre binaire et hexadécimal,<br/>
on regroupe simplement les bits par paquets de quatre, sans<br/>
calcul.</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>$8$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : huit bits forment un octet, ce qui correspond à<br/>
<strong>deux</strong> chiffres hexadécimaux (de $00$ à $FF$).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$1$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul bit ne permet de coder que deux valeurs<br/>
($0$ et $1$). Or l'hexadécimal nécessite seize valeurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$4$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $2^4 = 16$, donc quatre bits suffisent à<br/>
coder les seize valeurs hexadécimales. C'est ce qui rend<br/>
la conversion entre hexadécimal et binaire si simple.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$16$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion entre la base ($16$ symboles) et le<br/>
nombre de bits requis. $4$ bits suffisent puisque<br/>
$2^4 = 16$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q09 : Lecture d'un chiffre hexadécimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la valeur décimale de la lettre $C$ utilisée comme<br/>
chiffre hexadécimal ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Mémo : A vaut $10$ et chaque lettre suivante incrémente<br/>
d'une unité, jusqu'à F qui vaut $15$.</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 : $13$ correspond à la lettre $D$. La lettre $C$<br/>
vient juste avant, donc vaut $12$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$12$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les lettres A, B, C, D, E, F valent<br/>
respectivement $10, 11, 12, 13, 14, 15$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$11$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $11$ correspond à la lettre $B$. La lettre $C$<br/>
vient juste après, donc vaut $12$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$3$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion possible avec la position de C dans<br/>
l'alphabet. En hexadécimal, A vaut $10$, B vaut $11$, C<br/>
vaut $12$, etc.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q10 : Bit de poids fort</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que désigne le <strong>bit de poids fort</strong> dans la représentation<br/>
binaire d'un nombre ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En complément à deux, le bit de poids fort joue un rôle<br/>
particulier : il indique le signe ($0$ pour positif, $1$ pour<br/>
négatif).</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 bit le plus à gauche, qui correspond à la plus grande puissance de $2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sur $n$ bits, le bit de poids fort est en<br/>
position $n-1$, avec un poids de $2^{n-1}$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le bit le plus à droite (de poids $2^0$)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le bit de poids <strong>faible</strong>. Le bit de poids<br/>
fort est au contraire celui dont la position a la plus<br/>
grande valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le bit qui change le plus souvent quand on incrémente le nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est au contraire le bit de poids <strong>faible</strong> qui<br/>
change à chaque incrément. Le bit de poids fort change le<br/>
moins souvent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le bit qui vaut systématiquement $1$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un bit de poids fort peut valoir $0$ ou $1$,<br/>
comme tout autre bit.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q11 : Conversion binaire vers décimal sur huit bits</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut $01001101_2$ en base décimale ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Astuce : pour les conversions sur huit bits, mémoriser les<br/>
puissances de $2$ jusqu'à $2^7 = 128$. La somme des bits à $1$<br/>
donne directement la valeur décimale.</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>$74$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur de calcul : vérifier les puissances de $2$ associées<br/>
aux bits à $1$. On doit avoir $2^6 + 2^3 + 2^2 + 2^0$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$77$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $01001101_2 = 64 + 8 + 4 + 1 = 77_{10}$.<br/>
Les bits à $1$ sont aux positions $6, 3, 2, 0$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$93$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est $01011101_2$. Lire attentivement les bits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$109$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est $01101101_2$, pas $01001101_2$. Bien<br/>
identifier la position de chaque bit à $1$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q12 : Conversion hexadécimal vers binaire</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est l'écriture binaire de $A3F_{16}$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un chiffre hexa = quatre bits. La conversion est purement<br/>
mécanique : il suffit de remplacer chaque chiffre hexa par les<br/>
quatre bits correspondants, dans l'ordre.</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>$1010001111_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il manque deux bits. Chaque chiffre hexadécimal<br/>
doit être codé sur exactement quatre bits, en complétant<br/>
par des zéros à gauche si nécessaire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$111000111101_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : vérifier la conversion de chaque chiffre.<br/>
A → $1010$, pas $1110$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$101000111111_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : A → $1010$, $3$ → $0011$, F → $1111$.<br/>
Mis bout à bout : $1010\ 0011\ 1111_2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$111111000110_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a inversé l'ordre des chiffres. Lire de gauche<br/>
à droite : A puis $3$ puis F.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q13 : Addition binaire avec retenue</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut $1011_2 + 0110_2$ (addition binaire sur quatre bits) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'addition binaire suit les mêmes règles que l'addition<br/>
décimale, avec retenues : $0+0 = 0$, $0+1 = 1$, $1+1 = 10$<br/>
(retenue), $1+1+1 = 11$ (retenue). Si le résultat sort de<br/>
l'intervalle de codage, on parle de dépassement.</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>$0001_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on ne peut pas obtenir un nombre plus petit que<br/>
$1011$ en lui ajoutant un nombre positif. Vérifier la<br/>
retenue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$0101_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion possible avec un XOR (différence) au<br/>
lieu d'une addition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$1101_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion possible entre OU logique et addition.<br/>
L'addition propage des retenues, contrairement au OU.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$10001_2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $1011 + 0110 = 10001_2$ (en posant l'addition<br/>
colonne par colonne, avec retenues). Vérification :<br/>
$11 + 6 = 17 = 16 + 1 = 10001_2$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q14 : Intervalle de codage en complément à deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sur huit bits en complément à deux, quel est l'intervalle des<br/>
entiers relatifs codables ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur $n$ bits en complément à deux, l'intervalle est<br/>
$[-2^{n-1}\,;\, 2^{n-1} - 1]$. La dissymétrie (un négatif de<br/>
plus) vient du fait que $0$ est compté côté positif.</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>$[-128\,;\, 127]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sur $n = 8$ bits, l'intervalle est<br/>
$[-2^{n-1}\,;\, 2^{n-1} - 1] = [-128\,;\, 127]$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$[-128\,;\, 128]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur $128$ ne peut pas être codée car<br/>
$10000000_2$ vaut $-128$ en complément à deux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$[-127\,;\, 127]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il y a un négatif de plus que de positifs. La<br/>
plus petite valeur est $-128$, pas $-127$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$[0\,;\, 255]$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'intervalle des entiers <strong>naturels</strong><br/>
(non signés) sur huit bits.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q15 : Calcul du complément à deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la représentation binaire de $-19$ sur huit bits, en<br/>
complément à deux ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les trois étapes du complément à deux : (1) écrire la valeur<br/>
absolue en binaire, (2) inverser tous les bits (complément à<br/>
un), (3) ajouter $1$. Cela revient à calculer $2^n - |x|$.</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>$11101101$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : étape par étape, $19 = 00010011$, on<br/>
inverse → $11101100$, on ajoute $1$ → $11101101$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$11101100$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le complément à un (inversion des bits)<br/>
mais on a oublié l'étape finale d'ajouter $1$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$11101110$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a ajouté $2$ au lieu de $1$ après inversion,<br/>
ou on a inversé un bit de plus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$10010011$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la <strong>représentation naïve</strong> (signe + valeur<br/>
absolue), qui n'est pas le complément à deux. Cette<br/>
notation a des défauts qui justifient justement le<br/>
complément à deux.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q16 : Lecture d'un nombre négatif</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut $11111101_2$ interprété en complément à deux sur huit<br/>
bits ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Méthode : si le bit de poids fort vaut $1$, le nombre est<br/>
négatif. On retrouve sa valeur absolue en appliquant à<br/>
nouveau le complément à deux (inversion + $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>$-125$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion possible. Vérifier en posant l'addition<br/>
$00000011 + 11111101$ : si on obtient $00000000$ (avec<br/>
retenue ignorée), c'est bien $3$ et $-3$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$-253$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a oublié que la valeur absolue se déduit en<br/>
appliquant à nouveau le complément à deux, pas en lisant<br/>
la magnitude restante.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$253$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la lecture comme entier <strong>naturel</strong>. Or le<br/>
bit de poids fort à $1$ indique un nombre négatif en<br/>
complément à deux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$-3$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on inverse → $00000010$, on ajoute $1$ →<br/>
$00000011 = 3$, le bit de poids fort à $1$ donne le signe<br/>
négatif. Donc $-3$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q17 : Couleurs HTML en hexadécimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En CSS, la couleur <code>#FF5733</code> est codée en hexadécimal sur six<br/>
chiffres. Que vaut la composante rouge en décimal ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une couleur RVB sur huit bits par composante prend la forme<br/>
<code>#RRVVBB</code> où chaque paire de chiffres hexa code une valeur<br/>
entre $00$ et $FF$ ($0$ et $255$). Ici : rouge = $FF = 255$,<br/>
vert = $57 = 87$, bleu = $33 = 51$.</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>$33$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion entre la lecture décimale et<br/>
hexadécimale. $33_{16} = 3 \cdot 16 + 3 = 51_{10}$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$87$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $87$ correspond à la composante verte $57_{16}$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$255$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la composante rouge est $FF_{16}$, soit<br/>
$15 \cdot 16 + 15 = 255_{10}$. C'est le maximum possible<br/>
pour une composante.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$51$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $51$ correspond à la composante bleue $33_{16}$.<br/>
Les composantes sont dans l'ordre RVB (rouge, vert, bleu).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q18 : Nombre de valeurs codables</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de valeurs différentes peut-on représenter sur $n$ bits ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette croissance exponentielle explique pourquoi les<br/>
processeurs $64$ bits ($2^{64}$ adresses possibles) couvrent<br/>
toute la mémoire imaginable, alors que les processeurs $32$<br/>
bits ($\approx 4 \cdot 10^9$ adresses) sont déjà saturés pour<br/>
la mémoire moderne.</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>$n$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion entre le nombre de bits et le nombre de<br/>
valeurs. Avec $1$ bit on a $2$ valeurs, avec $2$ bits on<br/>
en a $4$, pas $2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$2 \cdot n$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la croissance n'est pas linéaire mais<br/>
<strong>exponentielle</strong>. Chaque bit supplémentaire double le<br/>
nombre de valeurs possibles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$2^n$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque bit pouvant prendre deux valeurs<br/>
indépendamment des autres, $n$ bits permettent<br/>
$2 \times 2 \times \cdots \times 2 = 2^n$ combinaisons.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$n^2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la croissance n'est pas polynomiale mais<br/>
exponentielle. Pour $n = 10$, on a $2^{10} = 1024$, pas<br/>
$100$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q19 : Astuce rapide du complément à deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pour calculer rapidement le complément à deux d'un nombre, on<br/>
parcourt ses bits <strong>de droite à gauche</strong>. Que fait-on ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Exemple : $20 = 00010100$. On garde « ...100 » (jusqu'au<br/>
premier $1$ depuis la droite) et on inverse le reste :<br/>
$11101100 = -20$. Cette astuce évite l'étape « inversion +<br/>
addition de $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>On ajoute $1$ à chaque bit individuellement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce n'est pas une opération sensée en binaire<br/>
(chaque bit ne vaut que $0$ ou $1$).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>On inverse tous les bits sans exception</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le complément à <strong>un</strong>. L'astuce du<br/>
complément à deux laisse une partie des bits inchangée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>On garde les bits jusqu'au premier $1$ inclus, puis on inverse les bits suivants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on conserve la partie droite (zéros et le<br/>
premier $1$) et on inverse tout le reste à gauche. Cela<br/>
évite les étapes intermédiaires.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>On inverse les bits jusqu'au premier $1$, puis on garde les suivants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse de la bonne règle. On commence par<br/>
<strong>garder</strong> la partie droite, puis on inverse à gauche.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q20 : Asymétrie positifs/négatifs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi y a-t-il un négatif de plus que de positifs en<br/>
complément à deux ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur huit bits, on a $256$ codes : $128$ pour les non négatifs<br/>
($0, 1, \ldots, 127$) et $128$ pour les négatifs<br/>
($-128, -127, \ldots, -1$). C'est une particularité du<br/>
complément à deux qu'il faut connaître.</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 le complément à deux gaspille un code</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : au contraire, le complément à deux n'a pas de<br/>
double représentation du zéro, il utilise donc tous les<br/>
codes possibles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que la représentation est moins efficace pour les positifs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la représentation est efficace symétrique pour la<br/>
plupart des opérations. La dissymétrie tient à un autre<br/>
phénomène.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Parce que $0$ est compté du côté des positifs et n'a qu'une seule représentation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sur $n$ bits, on a $2^n$ codes différents,<br/>
dont une moitié pour les négatifs et une moitié pour les<br/>
positifs. Comme $0$ est compté avec les positifs, il y en<br/>
a un de moins côté positif.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que les nombres négatifs prennent plus de bits</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tous les codes ont la même longueur en bits.<br/>
C'est la convention de signe qui crée la dissymétrie.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q21 : Dépassement de capacité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sur huit bits en complément à deux, que renvoie l'addition<br/>
$127 + 1$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le dépassement est un piège classique en C/Java. En complément<br/>
à deux, l'incrément du plus grand positif donne le plus petit<br/>
négatif. C'est la cause de bugs célèbres (faille de<br/>
l'algorithme de tri, débordement dans les calculs financiers).</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 : confusion possible avec une remise à zéro après<br/>
débordement, qui se produit pour les entiers non signés<br/>
($255 + 1 = 0$ mod $256$). Ici, on est en signé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$-128$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $01111111 + 00000001 = 10000000$. Or sur<br/>
huit bits en complément à deux, $10000000_2 = -128$. Il y<br/>
a dépassement de capacité (<em>overflow</em>).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python n'a pas de limite de taille des entiers,<br/>
donc cette question concerne les langages à entiers de<br/>
taille fixe (C, Java, etc.). En Python, $127 + 1 = 128$<br/>
sans souci.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$128$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $128$ n'est pas représentable sur huit bits en<br/>
complément à deux (l'intervalle s'arrête à $127$). Le<br/>
résultat est donc « tordu ».</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q22 : Défaut de la représentation naïve</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi n'utilise-t-on pas la <strong>représentation naïve</strong> (bit de<br/>
poids fort = signe, autres bits = valeur absolue) pour coder<br/>
les entiers relatifs ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>C'est précisément pour pouvoir réutiliser le circuit<br/>
d'addition standard que les processeurs adoptent le complément<br/>
à deux. La représentation naïve aurait aussi le défaut d'avoir<br/>
deux représentations du zéro ($+0$ et $-0$).</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 qu'elle ne permet pas de coder les nombres négatifs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : elle code bien les négatifs, mais avec deux<br/>
défauts qui la rendent peu pratique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'elle utilise plus de bits que le complément à deux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux représentations utilisent le même nombre<br/>
de bits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Parce que l'addition binaire usuelle ne donne pas le bon résultat sur les négatifs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avec la représentation naïve, on ne peut<br/>
plus utiliser l'additionneur standard pour les<br/>
soustractions. Le complément à deux résout ce problème :<br/>
le <strong>même circuit</strong> d'addition fonctionne pour positifs et<br/>
négatifs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'elle est plus lente à interpréter</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la lecture est en réalité <strong>plus simple</strong> (signe<br/>
+ valeur absolue). Le problème est ailleurs : dans<br/>
l'arithmétique.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q23 : Différence entre complément à un et complément à deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En quoi le <strong>complément à deux</strong> diffère-t-il du <strong>complément à un</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le complément à un (inversion seule) crée deux représentations<br/>
du zéro ($00\ldots0$ et $11\ldots1$). L'ajout du « $+1$ » du<br/>
complément à deux fait fusionner ces deux zéros et permet<br/>
d'utiliser l'arithmétique standard sans correction.</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 complément à un est calculé sur deux bits, le complément à deux sur deux octets</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : confusion sur les noms. Aucune des deux<br/>
appellations ne renvoie au nombre de bits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le complément à deux n'utilise pas le bit de poids fort comme signe</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : au contraire, le bit de poids fort sert de<br/>
signe en complément à deux ($0$ pour positif, $1$ pour<br/>
négatif).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le complément à un ne fonctionne que pour les nombres positifs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le complément à un peut s'appliquer à n'importe<br/>
quel motif binaire ; c'est juste une inversion de bits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le complément à un inverse tous les bits ; le complément à deux inverse tous les bits puis ajoute $1$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le complément à un est l'étape<br/>
intermédiaire de l'opération du complément à deux. Le « $+1$ »<br/>
final corrige la double représentation du zéro qui<br/>
subsisterait sans cette correction.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q24 : Cas particulier de la valeur minimum</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Sur huit bits en complément à deux, à quoi correspond le motif<br/>
$10000000_2$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette valeur est piégeuse : son opposé $+128$ n'existe pas en<br/>
huit bits signés. Calculer $-(-128)$ provoque un dépassement<br/>
qui ramène à $-128$ lui-même. C'est une source classique de<br/>
bugs en C ou Java.</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 : $0$ est codé $00000000$. Le motif $10000000$ est<br/>
la plus petite valeur signée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$-127$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur $-127$ correspond à $10000001_2$. Le<br/>
motif $10000000$ correspond à un cas un peu spécial.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$-128$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $-128 = -2^{n-1} = -2^7$. C'est la valeur<br/>
minimum codable sur huit bits en complément à deux. Cette<br/>
valeur n'a pas d'opposé représentable (il n'y a pas<br/>
$+128$).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$128$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $128$ n'est pas représentable sur huit bits en<br/>
complément à deux (l'intervalle s'arrête à $127$).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q25 : Entiers en Python vs en C</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En Python, l'expression <code>2 ** 100</code> donne un nombre entier<br/>
exact, alors qu'en C ou en Java elle provoquerait un<br/>
dépassement. Pourquoi ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Cette caractéristique est un atout pédagogique de Python :<br/>
l'élève n'a pas à se soucier des limites de codage. Mais cela<br/>
a un coût : les opérations sur de très grands entiers sont<br/>
plus lentes que sur des entiers de taille fixe.</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>Python utilise des nombres flottants pour tous les calculs entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python distingue bien les entiers (<code>int</code>) des<br/>
flottants (<code>float</code>). $2^{100}$ est calculé comme un entier<br/>
exact, pas approché.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python tronque silencieusement les entiers trop grands</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune troncature. Le résultat est exact, même<br/>
pour des nombres immenses.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python fait des calculs modulo $2^{64}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le comportement de C/Java sur entiers<br/>
$64$ bits. Python n'a pas de modulo implicite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python adapte automatiquement la mémoire allouée aux entiers, sans limite fixe</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les entiers Python sont en <strong>précision<br/>
arbitraire</strong>. L'interpréteur réserve autant de mémoire que<br/>
nécessaire pour représenter le nombre exactement.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q26 : Conversion décimal vers hexadécimal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est l'écriture hexadécimale de l'entier $195$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Méthode des divisions successives par $16$ : tant que le<br/>
quotient n'est pas nul, on note le reste et on continue avec<br/>
le quotient. Ici, $195 \div 16 = 12$ reste $3$, puis<br/>
$12 \div 16 = 0$ reste $12$ ($\text{C}$). On lit les restes<br/>
du dernier au premier : $\text{C3}_{16}$.</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>$\text{C3}_{16}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $195 = 12 \times 16 + 3$. Le quotient $12$<br/>
s'écrit $\text{C}$ et le reste $3$ s'écrit $3$, d'où<br/>
$\text{C3}_{16}$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$\text{C5}_{16}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur sur le reste : $195 - 12 \times 16 = 195 - 192 = 3$<br/>
(et non $5$). Bien vérifier la soustraction finale qui<br/>
donne le dernier chiffre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$\text{3C}_{16}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les chiffres ont été inversés. Le quotient se<br/>
lit en premier (à gauche), suivi du reste à droite. Le<br/>
bon résultat est $\text{C3}_{16}$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$\text{A3}_{16}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur sur le quotient : on a pris la lettre $\text{A}$<br/>
(qui vaut $10$) au lieu de $\text{C}$ (qui vaut $12$). Or<br/>
$195 \div 16 = 12$ reste $3$, donc le chiffre des<br/>
« seize » est bien $\text{C}$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q27 : Nombre minimum de bits</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de bits sont nécessaires au minimum pour coder en<br/>
binaire l'entier naturel $287$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Méthode : chercher le plus petit $n$ tel que $2^n - 1 \geq 287$,<br/>
ou de façon équivalente $2^n \geq 288$. Ici, $2^8 = 256$ et<br/>
$2^9 = 512$, donc le minimum est $n = 9$. De manière plus<br/>
formelle, ce nombre est $\lceil \log_2(287 + 1) \rceil = 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="100" format="html">
    <text><![CDATA[<p>$9$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on cherche le plus petit $n$ tel que<br/>
$2^n &gt; 287$. Or $2^8 = 256$ (insuffisant) et $2^9 = 512$<br/>
(suffisant), donc $n = 9$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$7$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sur $7$ bits, on peut coder les entiers de $0$<br/>
à $2^7 - 1 = 127$. Or $287 &gt; 127$, donc $7$ bits ne<br/>
suffisent pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$8$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sur $8$ bits, on couvre l'intervalle<br/>
$[0\,;\, 2^8 - 1] = [0\,;\, 255]$. Comme $287 &gt; 255$, un<br/>
octet est encore insuffisant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$10$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $10$ bits suffisent largement (ils couvrent<br/>
jusqu'à $1023$), mais ce n'est pas le <strong>minimum</strong>. Avec<br/>
$9$ bits, on atteint déjà $511$, ce qui est suffisant<br/>
pour $287$.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q28 : Décalage binaire à gauche</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En Python, que vaut l'expression <code>12 &lt;&lt; 2</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'opérateur <code>&lt;&lt;</code> (décalage à gauche) déplace tous les bits<br/>
vers la gauche, en complétant à droite par des zéros. Sur<br/>
l'écriture binaire de $12 = 1100_2$, deux décalages donnent<br/>
$110000_2 = 48$. C'est l'équivalent rapide de la<br/>
multiplication par $2^k$ ; l'opérateur inverse <code>&gt;&gt;</code> divise<br/>
entièrement par $2^k$.</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>$14$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a interprété <code>&lt;&lt;</code> comme une addition<br/>
($12 + 2 = 14$). Or l'opérateur <code>&lt;&lt;</code> est un <strong>décalage de<br/>
bits</strong>, pas une addition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$48$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>n &lt;&lt; k</code> décale les bits de $n$ de $k$<br/>
positions vers la gauche, ce qui équivaut à multiplier<br/>
par $2^k$. Ici, $12 \times 2^2 = 12 \times 4 = 48$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$24$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a multiplié par $2$ une seule fois.<br/>
L'opérateur <code>&lt;&lt;</code> décale de $2$ positions, ce qui revient<br/>
à multiplier par $2^2 = 4$, pas par $2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$3$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on a effectué un décalage à <strong>droite</strong> (<code>&gt;&gt;</code>),<br/>
qui correspond à une division entière par $2^k$, soit<br/>
$12 // 4 = 3$. Ici, c'est <code>&lt;&lt;</code> qui décale à <strong>gauche</strong>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Numération et représentation des entiers — Q29 : Plus grand entier non signé sur 32 bits</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quel est le plus grand entier naturel (non signé) que l'on<br/>
peut représenter sur $32$ bits ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sur $n$ bits, l'intervalle des entiers naturels codables est<br/>
$[0\,;\, 2^n - 1]$. Pour $32$ bits, cela donne environ<br/>
$4{,}3$ milliards de valeurs, ce qui correspond<br/>
historiquement à la limite de $4$ Go pour la mémoire vive<br/>
adressable directement par un processeur $32$ bits.</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 \times 32$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la quantité de valeurs codables croît de façon<br/>
<strong>exponentielle</strong>, pas linéaire. Chaque bit<br/>
supplémentaire double le nombre de valeurs possibles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>$2^{32} - 1$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sur $n$ bits, le plus grand entier<br/>
naturel codable est $2^n - 1$. Pour $n = 32$, cela vaut<br/>
$4\,294\,967\,295$, soit environ $4{,}3 \times 10^9$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$2^{16}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $2^{16} - 1 = 65\,535$ est le maximum sur $16$<br/>
bits, pas sur $32$. Doubler le nombre de bits élève le<br/>
maximum à un carré (à un près), pas en double.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$2^{32}$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on peut représenter $2^{32}$ valeurs<br/>
<strong>différentes</strong> (de $0$ à $2^{32} - 1$), mais la valeur<br/>
$2^{32}$ elle-même nécessiterait $33$ bits.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
