\begin{questions}
\item $\base{8364}{10}=\base{10000010101100}{2}$. On pourra regarder l'exercice \ref{exo-conversion-decimal-binaire} pour voir la méthode à utiliser.

\item Pour obtenir le codage UTF-8 du caractère \og \euro \fg, on part de la droite de sa représentation binaire et on compte 6 bits; on a alors :
\begin{center}
101100.
\end{center}
Ensuite, on met \og 10 \fg{} devant ces 6 bits :
\begin{center}
10101100.
\end{center}
On prend ensuite les 6 bits précédents, à savoir \og 000010 \fg, devant lesquels on met \og 10 \fg.

Il ne reste plus que \og 10 \fg, que nous mettons à la fin du premier octet, celui qui commence nécessairement par \og 1110 \fg{} car nous venons d'obtenir 3 octets.

\Par

Au final, on obtient que le codage UTF-8 du caractère \og \euro \fg{} est : \begin{center}
11100010 10000010  10101100.
\end{center}

\item À travers l'exemple de la question précédente, on peut voir que l'on regroupe les bits par 6 pour former les octets, et que l'on ajoute un octet pour indiquer le nombre total d'octets.

Ainsi, dans l'exemple précédent, $n=14$ et le nombre d'octets nécessaires en UTF-8 est :
\[
E\left(\frac{14}{6}\right)+1,
\]
où $E(x)$ désigne la partie entière de $x$ (par exemple, $E(\pi)=3$).

\Par

On peut donc dire que le nombre d'octets nécessaires, dans un cas général, est $E\left(\dfrac{n}{6}\right)+1$.

\item Pour avoir le nombre de bits du nombre binaire correspondant à la valeur décimale $D$ du caractère, il faut connaître le nombre $n$ tel que :
\[
2^{n-1} < D \leqslant 2^{n}.
\]
Par exemple, $2^{13} < \numprint{8364} \leqslant 2^{14}$ donc le nombre de bits nécessaires en binaire est 14.

Une fois que l'on a ce nombre, on utilise la formule de la question précédente. Cela donne :

\begin{algorithme}{Algorithme}
D est un entier naturel
n $\leftarrow$ 0
Tant que 2\^ \kern-2ex n $\leqslant$ D+1 faire
   n $\leftarrow$ n+1
Fin du Tant que
Afficher E(n/6)+1
\end{algorithme}

\Par

\begin{listing}{En Python}{01-06.py}%\nathanliveProgWithoutText
\end{listing}
\end{questions}
