\documentclass[a4paper,11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais,bloc,completemulti]{automultiplechoice}
\usepackage[french]{babel}
\usepackage{amsmath, amssymb}

\title{Représentation des réels}
\date{Numérique et sciences informatiques}

\begin{document}

\noindent\textbf{Représentation des réels} \hfill \textit{Numérique et sciences informatiques}\\[0.4em]
Nom~: \dotfill\ Prénom~: \dotfill

\bigskip

\element{premiererepresentationreels}{
  \begin{question}{q01}
    Quel est le type Python utilisé pour représenter les
nombres à virgule ?
    \begin{choices}
    \wrongchoice{\texttt{number}}
    \correctchoice{\texttt{float}}
    \wrongchoice{\texttt{int}}
    \wrongchoice{\texttt{real}}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q02}
    L'écriture \textbf{scientifique} d'un nombre réel sépare un
réel en :
    \begin{choices}
    \wrongchoice{Une fraction irréductible}
    \wrongchoice{Une partie entière et une partie décimale}
    \wrongchoice{Un signe et une valeur absolue}
    \correctchoice{Une mantisse (entre $1$ et $10$) et un exposant entier de $10$}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q03}
    Que définit la norme \textbf{IEEE $754$} ?
    \begin{choices}
    \correctchoice{La représentation binaire des nombres à virgule flottante (signe, exposant, mantisse)}
    \wrongchoice{La connectique des câbles réseau}
    \wrongchoice{Le format des adresses IP}
    \wrongchoice{Le format des fichiers PDF}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q04}
    Pourquoi les réels stockés en machine sont-ils en général
des \textbf{approximations} plutôt que des valeurs exactes ?
    \begin{choices}
    \correctchoice{Parce qu'il y a une infinité de nombres réels mais une mémoire finie}
    \wrongchoice{Parce que les ordinateurs sont mal conçus}
    \wrongchoice{Parce qu'il faut moins de mémoire}
    \wrongchoice{Parce que les flottants sont plus rapides que les entiers}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q05}
    Que renvoie l'expression Python \texttt{0.1 + 0.2} ?
    \begin{choices}
    \wrongchoice{Une erreur Python}
    \wrongchoice{Exactement $0{,}3$}
    \wrongchoice{$0{,}29999\ldots$ (sans aucune erreur)}
    \correctchoice{Une valeur très proche de $0{,}3$, mais avec une petite erreur d'arrondi (par exemple $0{,}30000000000000004$)}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q06}
    Pour tester si deux flottants \texttt{a} et \texttt{b} sont « égaux »
en Python, la bonne pratique est :
    \begin{choices}
    \wrongchoice{\texttt{a == b}}
    \wrongchoice{\texttt{int(a) == int(b)}}
    \correctchoice{\texttt{abs(a - b) < epsilon} avec \texttt{epsilon} petit (par exemple $10^{-9}$)}
    \wrongchoice{\texttt{a is b}}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q07}
    Quelle est la différence entre une représentation à
\textbf{virgule fixe} et une représentation à \textbf{virgule
flottante} ?
    \begin{choices}
    \correctchoice{La virgule fixe a un nombre de chiffres fractionnaires constant ; la virgule flottante a une précision relative}
    \wrongchoice{La virgule fixe n'existe que sur les vieux ordinateurs}
    \wrongchoice{Aucune différence en pratique}
    \wrongchoice{La virgule fixe est plus précise pour les très grands nombres}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q08}
    En Python, sur combien de bits est stocké un \texttt{float} ?
    \begin{choices}
    \wrongchoice{$128$ bits}
    \correctchoice{$64$ bits}
    \wrongchoice{$8$ bits}
    \wrongchoice{$32$ bits}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q09}
    La norme IEEE $754$ définit quelques valeurs spéciales
en plus des nombres réguliers. Lesquelles ?
    \begin{choices}
    \wrongchoice{Aucune valeur spéciale}
    \correctchoice{$+\infty$, $-\infty$, et NaN (« Not a Number »)}
    \wrongchoice{$\pi$, $e$, $\sqrt{2}$}
    \wrongchoice{Vrai et Faux}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q10}
    Quels sont les \textbf{trois champs} qui composent la
représentation IEEE $754$ d'un nombre flottant ?
    \begin{choices}
    \wrongchoice{Partie entière, partie décimale, partie complexe}
    \wrongchoice{Numérateur, dénominateur, exposant}
    \wrongchoice{Octets supérieurs, médians, inférieurs}
    \correctchoice{Bit de signe, exposant biaisé, mantisse (fraction)}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q11}
    Que peut-il se passer si on additionne plusieurs millions
de petits flottants entre eux ?
    \begin{choices}
    \wrongchoice{Le résultat est exact, comme une somme d'entiers}
    \wrongchoice{Le calcul devient infiniment lent}
    \wrongchoice{Python lève une erreur de précision}
    \correctchoice{Les erreurs d'arrondi peuvent s'accumuler et donner un résultat sensiblement différent du résultat mathématique exact}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q12}
    Que renvoie en Python l'opération \texttt{1e308 * 10} (où
\texttt{1e308} désigne $10^{308}$) ?
    \begin{choices}
    \wrongchoice{$10^{309}$}
    \correctchoice{\texttt{inf}}
    \wrongchoice{Une erreur de Python}
    \wrongchoice{$0$}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q13}
    Combien de chiffres décimaux significatifs un flottant
en \textbf{double précision} ($64$ bits) peut-il représenter
de manière fiable ?
    \begin{choices}
    \wrongchoice{Une infinité}
    \wrongchoice{Environ $50$}
    \correctchoice{Environ $15$ à $17$}
    \wrongchoice{Environ $7$}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q14}
    En Python, la fonction \texttt{math.isclose(a, b)} :
    \begin{choices}
    \wrongchoice{Convertit \texttt{a} et \texttt{b} en chaînes de caractères}
    \correctchoice{Compare deux flottants en tolérant une petite différence relative et/ou absolue}
    \wrongchoice{Renvoie toujours \texttt{True}}
    \wrongchoice{Lève une erreur si les nombres ne sont pas exactement égaux}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q15}
    Pour un calcul financier (additionner des centimes),
quel choix est le plus prudent en Python ?
    \begin{choices}
    \wrongchoice{Utiliser des \texttt{float}}
    \wrongchoice{Utiliser des nombres complexes}
    \correctchoice{Utiliser le module \texttt{decimal} ou des entiers représentant des centimes}
    \wrongchoice{Utiliser des chaînes de caractères}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q16}
    En Python, l'instruction \texttt{float(7)} renvoie :
    \begin{choices}
    \wrongchoice{\texttt{7} (entier inchangé)}
    \correctchoice{\texttt{7.0} (flottant)}
    \wrongchoice{Une erreur}
    \wrongchoice{\texttt{'7'} (chaîne de caractères)}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q17}
    Pourquoi \texttt{(1e16 + 1) - 1e16} donne-t-il $0$ en Python
au lieu de $1$ ?
    \begin{choices}
    \correctchoice{Parce que $1$ est négligeable face à $10^{16}$, la mantisse ne peut pas représenter cette différence avec sa précision limitée}
    \wrongchoice{Parce que Python ne sait pas additionner}
    \wrongchoice{Parce que les nombres trop grands sont arrondis à zéro}
    \wrongchoice{C'est un bug de Python}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q18}
    En IEEE $754$, un flottant \textbf{normalisé} s'écrit dans la
forme :
    \begin{choices}
    \wrongchoice{$0{,}m \times 2^e$ avec $m$ quelconque}
    \correctchoice{$1{,}m \times 2^e$ avec un bit implicite à $1$ devant la mantisse}
    \wrongchoice{$m \times 10^e$ avec $m$ et $e$ entiers}
    \wrongchoice{$m + e$ (somme)}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q19}
    En arithmétique flottante, l'addition est-elle toujours
\textbf{associative} (c'est-à-dire $(a + b) + c = a + (b + c)$) ?
    \begin{choices}
    \wrongchoice{Cela dépend du système d'exploitation}
    \wrongchoice{Cela dépend du langage de programmation}
    \correctchoice{Non, l'ordre des additions peut changer le résultat à cause des arrondis}
    \wrongchoice{Oui, comme pour les entiers}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q20}
    Pourquoi $0{,}5$ a une représentation binaire \textbf{exacte},
mais pas $0{,}1$ ?
    \begin{choices}
    \wrongchoice{Parce que $0{,}5$ est plus grand que $0{,}1$}
    \wrongchoice{Parce que $0{,}5$ est utilisé plus souvent}
    \wrongchoice{Parce que $0{,}5$ a un seul chiffre, $0{,}1$ aussi}
    \correctchoice{Parce que $0{,}5 = 1/2 = 2^{-1}$ est une puissance de $2$, alors que $0{,}1 = 1/10$ ne l'est pas et donne un développement périodique en binaire}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q21}
    Pourquoi l'exposant en IEEE $754$ est-il stocké avec un
\textbf{biais} (par exemple, $+1023$ pour la double précision) ?
    \begin{choices}
    \correctchoice{Pour simplifier la comparaison entre deux flottants en utilisant la comparaison entière standard}
    \wrongchoice{Pour respecter une convention historique sans intérêt technique}
    \wrongchoice{Parce que les processeurs ne savent pas gérer les nombres négatifs}
    \wrongchoice{Pour économiser de la mémoire}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q22}
    Quand utilise-t-on des nombres \textbf{dénormalisés} en
IEEE $754$ ?
    \begin{choices}
    \wrongchoice{Pour les très grands nombres}
    \wrongchoice{Pour les valeurs spéciales comme NaN}
    \wrongchoice{Pour les calculs en simple précision}
    \correctchoice{Pour les nombres très proches de zéro, plus petits que le plus petit nombre normalisé représentable}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q23}
    Quel calcul est \textbf{numériquement instable} parmi les
suivants ?
    \begin{choices}
    \correctchoice{$a - b$ quand $a$ et $b$ sont très proches (annulation catastrophique)}
    \wrongchoice{$a + b$ pour $a$ et $b$ de même signe}
    \wrongchoice{$a \times b$ pour $a$ et $b$ proches de $1$}
    \wrongchoice{$a / b$ quand $b$ est grand}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q24}
    En Python, quelle est la principale différence entre les
modules \texttt{decimal} et le type \texttt{float} ?
    \begin{choices}
    \correctchoice{\texttt{decimal} calcule en base $10$ avec une précision configurable, donc sans erreur d'arrondi pour les nombres décimaux humains}
    \wrongchoice{\texttt{decimal} utilise moins de mémoire}
    \wrongchoice{\texttt{decimal} est plus rapide}
    \wrongchoice{\texttt{decimal} ne fonctionne qu'avec des entiers}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q25}
    Parmi les énoncés suivants, lequel est \textbf{vrai} sur les
nombres flottants en machine ?
    \begin{choices}
    \wrongchoice{La précision des flottants augmente avec la taille du nombre}
    \wrongchoice{Les calculs flottants sont aussi précis que les calculs sur papier}
    \correctchoice{Le test d'égalité \texttt{==} entre flottants est souvent piégeur, et il vaut mieux comparer avec une tolérance}
    \wrongchoice{Les flottants peuvent représenter exactement tous les nombres rationnels}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q26}
    Quelle est l'écriture binaire de $6{,}625$ ?
    \begin{choices}
    \wrongchoice{$1010{,}11$}
    \wrongchoice{$110{,}625$}
    \wrongchoice{$110{,}11$}
    \correctchoice{$110{,}101$}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q27}
    Parmi les réels suivants (écrits en base $10$), lequel n'a
\textbf{pas} une écriture finie en base $2$ ?
    \begin{choices}
    \correctchoice{$0{,}1$}
    \wrongchoice{$0{,}75$}
    \wrongchoice{$0{,}25$}
    \wrongchoice{$0{,}5$}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q28}
    Le réel $5{,}5$ s'écrit en notation scientifique binaire
$5{,}5 = 1{,}011_2 \times 2^{2}$. Quel est son exposant
\textbf{biaisé} sur huit bits, tel qu'il sera stocké en simple
précision (norme IEEE $754$) ?
    \begin{choices}
    \wrongchoice{$2$}
    \wrongchoice{$125$}
    \wrongchoice{$130$}
    \correctchoice{$129$}
    \end{choices}
  \end{question}
}

\element{premiererepresentationreels}{
  \begin{question}{q29}
    On considère le mot $32$ bits suivant, stocké en simple
précision (norme IEEE $754$) :

\begin{lstlisting}
0 | 10000001 | 01000000000000000000000
\end{lstlisting}

(signe sur $1$ bit, exposant sur $8$ bits, mantisse sur
$23$ bits). Quelle est la valeur décimale représentée ?
    \begin{choices}
    \wrongchoice{$2{,}5$}
    \correctchoice{$5$}
    \wrongchoice{$10$}
    \wrongchoice{$-5$}
    \end{choices}
  \end{question}
}


\onecopy{1}{
  \shufflegroup{premiererepresentationreels}
  \insertgroup{premiererepresentationreels}
}

\end{document}
