Arnaud Labourel
Système conventionnel de comptage en base 10 incompatible avec la machine \(\Longrightarrow\) Étude d’autres systèmes de numération
Systèmes de numération : utilisation de symboles appelés chiffres (digits en anglais)
Le nombre de chiffres utilisés correspond à la base du système :
\[c_nc_{n-1}\dots c_1c_0|_\beta= \sum_{i=n}^{i=0} (c_i\beta^i) = c_n\beta^n+ \cdots +c_2\beta^2+c_1\beta^1+c_0\beta^0\]
où \(c_i\) est le chiffre de rang \(i\) : le rang 0 correspond au chiffre le plus à droite.
\[c_nc_{n-1}\dots c_1c_0|_2 = \sum_{i=n}^{i=0} (c_i2^i) = c_n2^n+ \cdots +c_22^2+c_12+c_0\]
\[ \begin{array}{lll} 2019|_{10} & = & 1\times 1024+1\times 512+1\times 256+1\times 128+1\times 64 \\ & & + 1 \times 32+0\times 16+0\times 8+ 0\times 4+1\times 2+1\times 1\\ & = & 11111100011|_2 \end{array} \]
\[c_nc_{n-1}\dots c_1c_0|_{16} = \sum_{i=n}^{i=0} (b_i16^i) = b_n16^n+ \cdots +b_216^2+b_116+b_0\]
\[ 2019|_{10} = 7 \times 16^2 + 14 \times 16 + 0 = 7 \times 16^2 + E \times 16 + 0 = 7F3|_{16} \]
On note \(n+1=N_{\beta}(x)\) le nombre de chiffres nécessaires pour exprimer \(x\) dans la base \(\beta\).
\(N_{\beta}(x)\) est le plus petit entier strictement supérieur à \(\log_\beta(x)\)
Le rapport \(\frac{N_\beta(x)}{N_{\beta'}(x)}\) tend vers \(\frac{\ln(\beta')}{\ln(\beta)}\) quand \(x\) tend vers l’infini
Pour écrire un grand nombre en base \(2\), il faut environ \(3,32\) fois plus de chiffres qu’en base \(10\) car \(\frac{\ln(10)}{\ln(2)} = 3,32\dots\)
Toujours un bit pour coder le signe, mais une autre façon de coder la valeur absolue
\[ \begin{array}{ccl} 1 & = & (0000000000000001) \\ -1 & = & (1111111111111111) \\ 3 & = & (0000000000000011) \\ -3 & = & (1111111111111101) \\ 32767 & = & (0111111111111111) \\ -32767 & = & (1000000000000001) \\ -32768 & = & (1000000000000000) \\ \end{array} \]
Pour que l’addition entre deux nombres soit correcte quelque soit leur signe.
\[ \begin{array}{rr} ~0000000000000011& 3\\ \underline{+1111111111111111}& \underline{+(-1)} \\ 1 0000000000000010 & 2 \end{array} \]
On additionne les chiffres un par un en partant de la droite comme pour la base 10.
On additionne les deux chiffres plus la retenue :
\[ \begin{array}{rrrrrrrrrr} {~^1}&{~^1}&{~^1}&{~^1}&&{~^1}&&&&\\ ~&1&1&0&1&0&1&1&0&0\\ +&1&0&1&1&0&1&0&1&0\\ \hline 1&1&0&0&0&1&0&1&1&0 \end{array} \]
On soustrait les chiffres un par un en partant de la droite.
On soustrait au chiffre en haut le chiffre en bas plus la retenue :
\[ \begin{array}{rrrrrrrrrr} &{~^{-1}}&{~^{-1}}&{~^{-1}}&{~^{-1}}&&{~^{-1}}&&&\\ ~&1&1&0&0&0&1&0&0&1\\ -&0&1&1&0&1&0&1&0&0\\ \hline &~0&~1&~0&~1&~1&~0&~1&~0&~1 \end{array} \]
On multiplie le premier nombre par chacun des chiffres du deuxième :
On additionne les nombres ainsi obtenus pour avoir le résultat final.
\[ \begin{array}{r} 110001001\\ \times 10101\\ \hline 110001001\\ +11000100100\\ +1100010010000\\ \hline 10000000111101 \end{array} \]
Les chiffres après la virgule ont des rangs négatifs et sont donc multipliés par des puissances de 2 négatives :
\[c_nc_{n-1}\dots c_1c_0,c_{-1}c_{-2}c_{-3}\dots|_2= \sum_{i=-\infty}^{i=n} (c_i2^i)\]
\[ \begin{array}{rcc} -3,625_{10} = & \underbrace{1111111111111101}&\underbrace{1010000000000000}\\ & -3 & 0,625 = 0,5+0,125 = \frac{1}{2}+\frac{0}{4}+\frac{1}{8} \end{array} \]
Si \(n\) est le nombre de bits de la partie entière, et \(d\) est le nombre de bits de la partie fractionnaire
\[-1540,412654 = -1,540412654. 10^3\] \[101110,001101 = 1,01110001101\times 2^5\]
mantisse | exposant | taille totale | |
---|---|---|---|
Simple précision | 23 | 8 | 32 |
Double précision | 52 | 11 | 64 |
On obtient donc :
\[ \begin{array}{ccc} \underbrace{1} & \underbrace{10000001}&\underbrace{10101000000000000000000}\\ \mathrm{signe} & \mathrm{exposant} & \mathrm{mantisse} \end{array} \]
Cet incident qui a coûté la vie à plusieurs dizaines de personnes le 25 février 1991. Source : Rapport du Gao
Le 4 Juin 1996, le vol 501 (Ariane 5) explose 37 secondes après le décollage.
Le problème vient d’une erreur logicielle.
Un nombre flottant (accélération horizontale), codé sur 64 bits est converti en entier signé. Sa valeur dépasse le plus grand entier signé représentable sur 16 bits et la conversion échoue (exception) provoquant une erreur dans le système de référence inertielle. Source : Flight 501 Failure
En 1984, la bourse de Vancouver crée son indice (qui indique si la bourse est en hausse ou en baisse) initialisé à 1000. Il est recalculé 3000 fois par jour. À chaque fois, on ne conserve que 3 décimales (troncature).
\(\Rightarrow\) Au bout de 10 ans, l’indice vaut 500
Sa valeur réelle est pourtant > à 1000.
Source : The Wall Street Journal November 8, 1983, p. 37
Le compteur des semaines d’un GPS grand public est un entier codé sur 10 bits. Après la semaine 1023, on passe à la semaine 0… Ceci (Week Number Roll0ver ou WNRO) s’est produit pour la première fois le 21 août 1999 et se reproduira le 6 avril 2019.
Source : Memorandum on GPS