I Système de numération
I.1 - Introduction
Un entier naturel N dans une base b, peut se décomposer tel que : avec les symboles (i position du symbole -1 car le premier i est 0)
Attention !
ne signifie pas que N peut s’écrire sous la forme d’une multiplication, c’est bien la suite de symboles qu’on représente. Par exemple N = 12 avec et
Donc dépend de la base utilisée, par exemple en base 10 :
Pour une base donnée, on peut la représenter dans une base 10 à chaque fois : avec le poids associé au symbole
La signification du symbole dépend de son poids (donc de sa place dans la suite de symboles représentant le nombre) → position du symbole très importante
Exemple
15 51 même symbole mais avec des positions différentes
Même chose pour la partie fractionnaire avec donc
I.2 - nombres décimaux - base 10
Les symboles en base 10 : Les poids sont des puissances de 10 positives :
Décomposer 1987 en base 10
7 est dit le poids faible (nombre tout à droite)
Attention dans la décomposition
décalage d’indice entre la position et le poids (dans l’exemple précédent, 9 est à la troisième position mais avec un poids de 2)
Partie fractionnaire (après la virgule)
Donc et
Même chose que précédemment mais les puissances de 10 sont négatives (car )
Décomposer 25,308 en base 10
I.3 - nombres binaires (base 2)
Base la + utlisée en informatique : a deux valeur (0 ou 1), que l’on peut aussi noter (Vrai/Faux)
Les symboles utilisés dans la base binaires = bits (binary digit) 8 bits = 1 octect ⇒ stockage des informations en octetcs
Donc, l’écriture d’un nombre en base 2 est tel que : qui en écriture donne :
Attention !
Entre la représentation d’un nombre par sa somme de symboles et de poids et son écriture, on inverse le sens ! La première position est celle toute à droite en écriture
- Most Significant Bit (MSB) :
- Less Significant Bit (LSB) :
Décomposer 101 ("un zéro un" et non "cent-un")
On peut faire de même qu’en base 10 pour la partie fractionnaire.
Tableau des puissances de 2
1024 | 512 | 256 (octet) | 128 | 64 | 32 | 16 | 8 | 4 | 3 |
1 | 0.5 | 0.25 | 0.125 |
I.4 - nombres hexadécimaux (base 16)
Très utilisée en informatique pour l’affichage des nombres binaires car 1 hexadécimal correspond à 4 bits
avec $0 < \alpha_{i}<15$$
- Symboles : {0, 1, …, 9, A, B, C, D, E, F}
- Poids : puissances positives de 16
Tableau de correspondance
A | B | C | D | E | F |
---|---|---|---|---|---|
10 | 11 | 12 | 13 | 14 | 15 |
Décomposer AF,D8 (16) en base 16
II Conversions (transcodage)
On cherche les opérations pour changer de base. Plus la base est petite, plus le nombre de symboles équivalent en sortie de conversion est grand.
II.1 - Conversion d’un nombre en base b (2 ou 16) à un nombre en base 10
Conversion la plus simple, toujours la même méthode utilisée ⇒ écriture polynomiale :
Convertir 10011 (2) en base 10
De même avec la base 16 :
Convertir 5EA (16) en base 10
A vaut 10, E vaut 14 en base 16
II.2 - Conversion d’un nombre en base 10 à un nombre en base b (2 ou 16)
Méthode un peu plus complexe que dans l’autre sens. Il existe 2 méthodes :
- par soustraction
- par division
Méthode par soustraction
- Recherche du poids le plus proche inférieur de N dans la base b :
- Soustraction de N(10) du nombre qui multiplie cette puissance
- Retour à l’étape 2 avec le nombre obtenu
- Fin quand on arrive à pour la partie entière (donc )
Partie fractionnaire
Même méthode, poids fort à droite de la virgule (contrairement au nombre entier où le poids fort est à gauche de la virgule) Mais attention, le procédé peut devenir infini
Nombre de bits nécessaires :
Convertir 95 (10) en base 2
- Puissance de 2 la plus proche de 95 : 64
- On soustrait à 95 une fois 64 (car on a 1 fois 64 max dans 95) :
- On répète l’opération : puissance de 2 la plus proche ⇒ 32 donc
On a donc :
Donc on a
Convertir 95 (10) en base 16
Donc
Méthode par divisions euclidiennes successives par b
Partie entière
Attention
Lecture de bas en haut pour cette méthode contrairement à la méthode précédente qui se fait de haut en bas
Convertir 95 (10) en base 2
Puis, on prend le quotient de la division et on répète l’opération :
Le quotient est égal à 0 donc on s’arrêt à cette étape
Donc on obtient le nombre (lecture de bas en haut des restes) :
Convertir 95 (10) en base 2
Donc les restes sont et donc le nombre est
Petites astuces
- Les multiples de b se terminent par 0 :
- Les multiples de b2 se terminent par 00 :
- Les multiples de b3 se terminent par 000 :
(fonctionne en base 10 : 100 = 102)
Pour la conversion en base binaire : Avec n bits 2n (valeurs de 0 à 2n-1)
Nombre de bits 4 8 16 32 Plage de valeurs 0 à 15 0 à 255 0 à 65 535 0 à 4 294 672 296
Partie fractionnaire
On peut utiliser la Méthode par soustraction pour la partie fractionnaire
La méthode de division successive ne fonctionne pas donc on utilise la méthode de multiplication successives par b ⇒ Le calcul peut être infini pour la partie fractionnaire
Convertir 0,375 (10) en base 2
On s’arrête lorsque l’on atteint x ,0
On lit les chiffres entiers pour la partie décimale : donc
Convertir 0,375(10) en base 16
Donc :
II.3 - Conversion d’un nombre entre les bases 2 et 16
Base binaire = 22 Base hexadécimale = 24 Donc la conversion est assez rapide car on peut faire des paquets de bits
Hexadécimal vers binaire
Chaque symbole est remplacé par 4 bits
Binaire vers hexadécimal
- 1 paquet de 4 bits = 1 symbole
- Séparation de la partie entière et de la partie fractionnaire
- Partie entière : de la droite vers la gauche
- Partie fractionnaire : de la gauche vers la droite
- Rajouter des 0 si besoin
Convertir FA,8 (16) en base 2
- F en binaire : 1111(2) (on peut passer par l’intermédiaire de la base 10, où F vaut 15 si besoin)
- A en binaire : 1010(2)
- 8 en binaire : 1000 (car )
Donc :
Convertir 10111,01 (2) en base 16
On ajoute des 0 à gauche de la virgule et à droite de la virgule pour avoir des paquets de 4 bits 001 0111, 0100
Donc :
- 0001(2) = 1(16)
- 0111(2) = 7(16)
- 0100(2) = 4(16)
Soit : 0001 0111,0100(2) = 17,4(16)
III Opérations
Additions
Comme en décimal (indiquer les retenues)
Règles en base 2
- 1(2) + 1(2) = 10(2)
- 1(2) + 0(2) = 1(2)
- 1(2) + 1(2) + 1(2) = 11(2)
111 (2) + 011(2)
Astuce pour la base 16
On complète pour arriver à 10(16)
Exemples
- A(16) + 8(16) = A(16) + 6(16) +2(16) car A+6 = 16
Donc A(16) + 8(16) = 10(16) + 2(16) = 12(16)
- C(16) + 8(16) = C(16) + 4(16) + 4(16) = 14(16)
68 (16) + 3A(16)
Soustractions
Règles pour la base 2
1(2) - 1(2) = 0
10(2) - 1(2) = 1
Exemples en base 2
111(2) - 011(2)
100(2) - 011(2)
Car 0 - (1 + 1) = 0 - 10 ⇒ on doit rajouter une unité
Exemple en base 16
68(16) - 3A(16)
Astuces en base 16
Pour faire 18 - A, de la même manière que pour l’addition on complète à 10(16). Comme A = 8+2, on a : 18(16) - A(16) = 18(16) - 8(16) - 2(16) = 10(16) - 2(16) = E(16)
Autre exemple : 15(16) - 8(16) Pour aller à 10(16), on a : 15(16) - 5(16) Donc en décomposant 8(16) : 15(16) - 5(16) - 3(16) = 10(16) - 3(16) = D(16)
(car on a en base 16 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12 … 1A, 1B … etc.)
Conclusion
On a vu les différentes manières de coder un nombre dans différentes bases. Les nombres ne sont pas directement codés en binaire, ou en hexadécimal, il existe des formats pour les coder en machine.