Académique Documents
Professionnel Documents
Culture Documents
Crs Dc02 Numeration Codage
Crs Dc02 Numeration Codage
Représentation
des nombres et des caractères
dans les systèmes numériques
CONTENU
1. LA NUMERATION .............................................................................................................................................................2
1.1. PRINCIPE DES SYSTEMES DE NUMERATION ......................................................................................................................2
1.2. NUMERATION DECIMAL ...................................................................................................................................................2
1.3. NUMERATION BINAIRE ....................................................................................................................................................2
1.4. NUMERATION HEXADECIMALE ........................................................................................................................................2
1.5. CHANGEMENTS DE BASE .................................................................................................................................................3
1.5.1. Base B=>Décimal ..................................................................................................................................................3
1.5.2. Décimal=>Binaire .................................................................................................................................................3
1.5.3. Décimal=>Hexadécimal ........................................................................................................................................3
1.5.4. Binaire=>Hexadécimal ..........................................................................................................................................3
1.5.5. Hexadécimal=>Binaire ..........................................................................................................................................3
2. LE CODAGE DANS LES SYSTEMES NUMERIQUES .................................................................................................3
2.1. CODES PONDERES ............................................................................................................................................................3
2.1.1. Code Binaire ...........................................................................................................................................................3
2.1.2. Décimal codé binaire (DCB) ..................................................................................................................................4
2.1.3. Code Complément à 1.............................................................................................................................................4
2.1.4. Code Complément à 2.............................................................................................................................................4
2.2. CODES NON-PONDERES....................................................................................................................................................5
2.2.1. Code Gray ou binaire réfléchi ................................................................................................................................5
2.2.2. Les Codes p parmi n ...............................................................................................................................................5
3. REPRESENTATION DES NOMBRES DANS LES SYSTEMES NUMERIQUES ......................................................6
3.1. LES NOMBRES ENTIERS ....................................................................................................................................................6
3.2. JUSTIFICATION A DROITE OU A GAUCHE .........................................................................................................................6
3.3. REPRESENTATION DES NOMBRES ENTIERS RELATIFS .......................................................................................................6
3.3.1. Nombres signés .......................................................................................................................................................6
3.3.2. Représentation en complément à 2 .........................................................................................................................7
3.4. REPRESENTATION DES NOMBRES REELS ..........................................................................................................................7
3.4.1. Représentation en virgule fixe ................................................................................................................................7
3.4.2. Principe de la représentation en virgule flottante ..................................................................................................7
3.4.3. Représentation en virgule flottante Simple précision (32 bits) ...............................................................................8
3.4.4. Représentation en virgule flottante Double précision (64 bits) ..............................................................................9
3.5. SYNTHESE .......................................................................................................................................................................9
4. CODAGE DES CARACTERES ALPHANUMERIQUES .............................................................................................10
4.1. CODE ASCII ..................................................................................................................................................................10
4.2. CODE UNICODE .............................................................................................................................................................10
Les neurosciences nous montrent que l'être humain possède une intuition fondamentale pour la numération
héritée de son évolution qui rend tout individu capable de faire des mathématiques élaborées. En effet, la
quantité est une notion essentielle à la survie : elle sert à évaluer la nourriture ou la taille d'un groupe social.
Si le système décimal est le plus fréquemment rencontré, car il a toujours été naturel de compter sur ses doigts,
les Sumériens utilisaient la base 60 (système sexagésimal : on compte les unités sur les doigts d’une main de 0 à
10 en deux fois et on retient les 5 dizaines sur l’autre main – le cerveau ne pouvant retenir qu’un chiffre à la fois
dans un calcul-, quand les deux mains sont pleines, on arrive à 60). Nous utilisons toujours ce système pour
exprimer la mesure des angles plan et du temps.
CI 2 Comportement des systèmes numériques
1. LA NUMERATION
1.1. Principe des systèmes de numération
Quel que soit le système de numération (base B), tout nombre X se représente par X an , an 1,..., a1, a0 B
n
et peut se calculer dans la base décimale comme : X ai .B i (formule polynomiale)
i 0
où :
Bn, Bn–1, …, B1, B0 sont les poids,
n, n-1,…2, 1, 0 sont les rangs,
an, an–1, …, a1 et a0 sont les coefficients ou les chiffres.
Ce principe d’écriture des nombres est appelé "numération positionnelle", dans lequel c’est la position du symbole
graphique qui donne sa valeur. Les systèmes de numération ainsi constitués sont dits pondérés.
Rappelons que ces chiffres nous sont parvenus par le monde arabo-musulman, où on écrit de la droite vers la gauche. La
lecture occidentale de gauche à droite n'est pas possible sans avoir une vision d'ensemble préalable du nombre.
Ex : 3677, on lit 3, puis trente-six, puis trois cent soixante-sept avant de comprendre que c'est en fait trois mille six cent
soixante-dix-sept ! Cette lecture est d'autant plus difficile que le nombre est grand…
Un quartet évolue de 0 à 15 (en base 10) soit de 0 à F en hexadécimal. L’assemblage de 2 quartets forme un mot qui varie de
0 à 255 en décimal et de 0 à FF en hexadécimal.
Pour indiquer la base 16, on peut la noter en indice suivant la manière générale, mais dans la pratique, on peut utiliser le
caractère $ (dollar) devant le nombre, ou la lettre H derrière ou alors 16# devant le nombre.
Exemple : X F 416 $F 4 F 4H 16$F 4
Denis Guérin Page 2 sur 10 TSI Eiffel Dijon
CI 2 Comportement des systèmes numériques
1.5. Changements de base
Base B=>Décimal
Pour toute base B vers la base 10, on applique la formule polynomiale.
n
X ai .B i an .B n an1.B n1 ,..., a1.B1 a0 .B 0 10
i 0
Décimal=>Binaire
On divise successivement par 2 le nombre décimal. Les restes correspondent aux bits consécutifs dans l’ordre inverse. C’est
terminé au premier dividende nul (que l’on ne compte pas).
44 2
0 22 2
0 11 2
1 5 2
1 2 2
0 1
Sens de lecture des restes (44)10 => (101100)2
Décimal=>Hexadécimal
Même chose, mais on divise par 16. Cette stratégie peut servir pour aller plus vite dans la conversion décimal/binaire d'un
grand nombre.
Ex : (251)10
251 16
11($B) 15 16
15($F) 0
(251)10= $FB
Binaire=>Hexadécimal
On regroupe les bits 4 par 4 (en quartets).
Chaque quartet peut alors être converti directement en hexadécimal (max. : 1111 = $ F).
Ex : 1111 1011 = $FB
Hexadécimal=>Binaire
Chaque symbole (chiffre ou lettre) en hexadécimal est converti dans le quartet binaire correspondant.
Ex : $F0A8=(1111 0000 1010 1000)2=(1111000010101000)2
Notations
donnée de 8 bits : « octet », parfois abusivement « byte » ; symbole o (minuscule),
donnée de 16 bits : « word » ou « mot » ou « Seizet »,
donnée de 32 bits : « dword » ou « double mot » ou « trente-deuzet »,
donnée de 64 bits : « qword » ou « quadruple mot ».
Code Complément à 1
Le code Complément à 1 ou Complément Restreint (CR) d’un nombre est obtenu en complémentant chaque bit un à un.
On a donc : X + CR(X) = 2n −1
Code Complément à 2
Le code Complément à 2 ou Complément Vrai (CV) correspond au calcul de 2n−|X|, où n est la longueur de la représentation
(ou taille du registre) et |X| la valeur absolue du nombre à coder.
Ainsi −1 s'écrit comme 256-1=255=(11111111)c2, pour les nombres sur 8 bits.
Ceci est à l'origine du nom de cette opération : "complément à 2 puissance n", tronqué en "complément à 2".
Exemple : (−4)
On prend le nombre positif 4 : 00000100
On inverse les bits : 11111011
On ajoute 1 : 11111100
(−4)10 =(11111100)c2
Remarque :
• C’est un code ADJASCENT qui pour 2n positions est CYCLIQUE (pour passer de la position 15 à la position 0, il n’y a
qu’un seul changement d’état).
• Le code étant non pondéré (il ne permet pas de faire du calcul), on n’affecte pas de poids aux colonnes mais un rang
ou un symbole (d c b a).
Intérêts :
• Code auto-correcteur : en effet la lecture du code peut être associée à la vérification du nombre de 0 et de 1 dans
l’information ce qui permet un contrôle de la validité du message.
• Code personnel : le nombre de possibilités permet de personnaliser son code. Ainsi le code 2 parmi 5 procure 3628800
arrangements différents.
C’est pourquoi il faudra généralement prendre soin lors de l’écriture d’un programme à la définition correcte du type des
variables, afin d’optimiser la place prise en mémoire par les données (taille du registre).
Exemple :
Microcontrôleur ATMEL ATMEGA (Carte ARDUINO UNO)
Le convertisseur analogique-numérique (ADC) intégré dans l’ATMEGA est d’une résolution sur 10 bits.
Il utilise 4 registres 8 bits dont :
• Le Registre ADMUX (ADC Multiplexer Selection Register) dont le bit 5 est nommé ADLAR : ADC Left Adjust Result
Ajustement à gauche à 1 ou à droite à 0 du résultat dans les registres ADCL et ADCH.
• 2 Registres ADCH et ADCL (ADC Data Register) pour stocker Le résultat de la conversion.
ADCH : registre 1 octet des adresses hautes.
ADCL : registre 1 octet des adresses basses.
Il faut donc connaître dès le départ le format de codage (Registre n bits), et si les nombres sont signés ou non.
Exemple :
0 0 0 0 0 0 1 0 =(+2)10
1 0 0 0 0 0 1 0 =(-2)10
Inconvénients :
• Le nombre zéro (0) possède deux représentations : 00000000 et 10000000
• Cette représentation impose de modifier l'algorithme d'addition ; si un des nombres est négatif, l'addition
binaire usuelle donne un résultat incorrect.
Limites :
Sur n bits, on peut représenter les nombres entiers de -2n-1 à 2n-1 -1.
Si un calcul amène à sortir de ces limites, on dit qu'il y a "dépassement de capacité" (overflow).
Lors de l'exécution d'un programme, le dépassement de capacité n'est pas forcément détecté par le processeur, ce qui
conduit évidemment à un traitement faux. C'est le programmeur qui doit être vigilant.
Ce codage peut s’écrire sous la forme d’un doublet : [partie entière en binaire, partie décimale en binaire]
Remarque : de par le fait que le processeur ne sait pas représenter le symbole "virgule", il faut, pour que les réels soient
correctement interprétés, que l'emplacement de la virgule soit défini une fois pour toute et ne varie plus, quels que soient
les nombres à représenter.
Principe :
• Pour le codage de la partie entière, nous le coderons comme à l’accoutumé en binaire sur n bits. La valeur de la
partie entière sera donc comprise entre :
0 et 2n-1 pour des valeurs positives,
-2n-1 jusqu'à 2n-1-1 pour des valeurs positives ou négatives ou alors en complément à 2.
• Pour le codage de la partie décimale, chaque bit situé après la virgule correspond à des puissances négatives de 2.
Exemple :
(11001,011 )2= 1.24 + 1.23 + 0.22 + 0.21 + 1.20 , 0.2-1 + 1.2-2 + 1.2-3 = (25,375)10 2-1=0,5
2-2=0,25
2-3=0,125
2-4=0,0625
Base 10 : Base 2 :
1
signe
.Mantisse.10 Exposant
1signe.Mantisse.2 Exposant
La vitesse des opérations en virgule flottante, communément appelée FLOPS dans les mesures de performances, est une
caractéristique importante des machines, en particulier dans les logiciels qui effectuent des calculs mathématiques à grande
échelle.
La norme IEEE 754 distingue la représentation binaire simple précision sur 32 bits, et la double précision sur 64 bits.
L’exposant étant une grandeur signée, le code complément à deux rend les calculs difficiles et on préfère décaler l’exposant
du nombre à coder.
Signe I-------Exposant------------I----------------------------------Mantisse----------------------------------I
Soit en hexadécimal X $C0 D4 00 00
Encodage Signe Exposant mantisse Valeur d’un nombre Précision Chiffres significatifs
64 bits 1 bit 11 bits 52 bits 1signe
.Mantisse.2 ( E 1023)
53 bits Environ 16
Codage au format Qn
Le code est obtenu en multipliant la valeur à coder par 2 n et en ne conservant que la partie entière, et codé ensuite en
binaire.
Exemple : Traduisons en binaire format Q14 le nombre : x = - 6,732
Intéressons nous tout d’abord à la valeur absolue : 6,732
En multipliant cette valeur par 214, nous obtenons : 110297,088
Sa partie entière vaut : 110297
Soit en binaire naturel : 11010111011011001
si l’on désire coder les nombres négatifs en complément à 2 :
En binaire sur 20 bits : 1110 0101 0001 0010 0111
Et en hexadécimal : E5127
3.5. Synthèse
Pour programmer un microcontrôleur, il existe plusieurs sortes de données.
Par exemple, pour précharger un compteur (Timer), on utilisera une variable de type entier « int »
Pour calculer la moyenne d'une série de données fournies par un capteur, il faut utiliser un nombre réel « float ».
S'il s'agit de tester une condition, un simple booléen peut suffire « boolean ».
long 4 octet (32 bits) Valeur entière signée -2 147 483 648 / +2 147 483 647
Valeurs numériques entières non signées
byte 1 octet (8 bits) Valeur entière non signée 0 / +255
unsigned int 2 octet (16 bits) Valeur entière non signée 0 / +65535
unsigned long 4 octet (32 bits) Valeur entière non signée 0/ +4 294 967 295
Valeurs numériques à virgule
float 4 octet (32 bits) Valeur à virgule signée -3.4028235.1038 / +3.40282351038
double
(identique à 4 octet (32 bits) Valeur à virgule signée -3.40282351038/ +3.40282351038
float)
Exemple :
En écrivant GRAY en ASCII nous obtenons :
Le code ASCII a été mis au point pour la langue anglaise, il ne contient donc pas de caractères accentués, ni de caractères
spécifiques à une langue. Pour coder ce type de caractère, le code ASCII a donc été étendu à 8 bits (un octet) pour pouvoir
coder plus de caractères (on parle d'ailleurs de code ASCII étendu ANSI). Le code ASCII étendu n'est pas unique et dépend
fortement de la plateforme utilisée ce qui fait qu’un message rédigé en $ par son émetteur peut être reçu en € par son
récepteur.
crédits :
Wikipédia
TSI Cannes