You are on page 1of 11

Les bases de numération

Ce cours purement théorique explique la manipulation de nombres exprimés dans différents systèmes de
numération.

Vous apprendrez à effectuer des décompositions, des conversions et des opérations dans chaque base.

http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 1 sur 11


1. Introduction
On définit une base numérique en fonction du nombre de symboles (chiffres ou lettres) dont elle dispose.

Le décimal

Avec la base 10, on en utilise 10.

Base 10 : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } soit 10 chiffres, aussi appelée base décimale.

Tout nombre peut se noter nb :

- n représente le nombre.
- b représente la base de numération utilisée.

Autre notation : un nombre décimal peut être suffixé de "d".

Le nombre 256 peut donc se noter 25610 ou 256d, bien qu'en général, la base décimale est
sous-entendue.

Le binaire

Un ordinateur est un assemblage de composants électroniques. Ils sont les supports de plusieurs millions
de transistors, qui, en fonction de la tension électrique à laquelle ils sont soumis, peuvent prendre l'état
logique "1" ou "0".

L'ordinateur travaille donc avec un système de numération binaire :

Base 2 : { 0, 1 } soit 2 chiffres.

Un nombre binaire peut se noter n2 ou se suffixer de "b" et ne peut être constitué que de 1 et de 0, par
exemple 10112 (ou 1011b) est un nombre binaire.

Comme vous l'aurez sans doute compris, nous utiliserons des puissances de 2 à l'instar des puissances de
10 du décimal.

On représente les nombres binaires sous plusieurs formes (un bit est un chiffre en binaire) :

Quartet : 4 bits (ex: 1011)


Octet : 8 bits
Mot ("word") : 16 bits (2 octets)
Double mot ("double word" ou "dword") : 32 bits (4 octets)

Le bit le plus à gauche est le bit de poids fort, et le bit le plus à droite est le bit de poids faible.

L'octal

Base 8 : { 0, 1, 2, 3, 4, 5, 6, 7 } soit 8 chiffres.

Un nombre octal est suffixé de "o".

L'hexadécimal

Base 16 : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } soit 16 chiffres.

Un nombre hexadécimal est suffixé de "h".

http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 2 sur 11


2. Décomposition des nombres
Règle générale

La décomposition d'un nombre se fait en fonction de la base utilisée, des chiffres et de leurs rang.

N = (d * Br) + ... + (d * B1) + (d * B0) + (d * B-1) + ... + (d * Br)

- N : nombre quelconque (ex : 14,18)


- d : chiffre (ex : 8)
- r : rang du chiffre (ex : -2)
- B : La base de numération utilisée (ex : 10)

Décompositions en décimal

Considérons le nombre décimal 4567 :

4567 = 4000 + 500 + 60 + 7

4567 = (4 * 103) + (5 * 102) + (6 * 101) + (7 * 100)

On multiplie chaque chiffre par le nombre correspondant à la base élevé à la puissance correspondant
au rang de ce chiffre.

rang 3 : 4 multiplié par 103 (1000) : chiffre des milliers


rang 2 : 5 multiplié par 102 (100) : chiffre des centaines
rang 1 : 6 multiplié par 101 (10) : chiffre des dixaines
rang 0 : 7 multiplié par 100 (1) : chiffre des unités

Ceci nous permet d'écrire ce tableau :

103 102 101 100


4 5 6 7

De la même façon, le nombre 12.568 se décompose ainsi :

12,568 = 10 + 2 + 0,5 + 0,06 + 0,008


12,568 = (1 * 101) + (2 * 100) + (5 * 10-1) + (6 * 10-2) + (8 * 10-3)

rang 1 : 1 multiplié par 101 (10) : chiffre des dixaines


rang 0 : 2 multiplié par 100 (1) : chiffre des unités
rang -1 : 5 multiplié par 10-1 (0,1) : chiffre des dixièmes
rang -2 : 6 multiplié par 10-2 (0,01) : chiffre des centièmes
rang -3 : 8 multiplié par 10-3 (0,001) : chiffre des millièmes

101 100 10-1 10-2 10-3


1 2 5 6 8

Voici donc, de manière générale, la décomposition d'un nombre décimal :

N10 = (d * 10r) + ... + (d * 101) + (d * 100) + (d * 10-1) + ... + (d * 10r)

- N : nombre décimal quelconque (ex : 14,18)


- d : chiffre au rang r (ex : 8)
- r : rang du chiffre (ex : -2)

Décompositions en binaire

Soit le nombre binaire 1101.


http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 3 sur 11
23 22 21 20
1 1 0 1

Le nombre ci-dessus peut se décomposer ainsi (en binaire) :

1101 = 1000 + 100 + 1

Ou sous forme décimale :

1101b = (1 * 23) * (1 * 22) * (0 * 21) + (1 * 20)

Notez que la valeur du rang d'un bit ne peut être multipliée que par 1 ou 0. Autrement dit, le rang est
additionné ou non selon la valeur bit. La décomposition précédente est donc équivalente à :

1101b = 23 + 22 + 20

Exemple avec 101.01b :

22 21 20 2-1 2-2
1 0 1 0 1

Et la décomposition rapide :

101.01b = 22 + 20 + 2-2

Autre exemple avec le nombre hexadécimal 5AF :

162 161 160


5 A F

N'oubliez pas que A et F sont bien des "chiffres" dans le système hexadécimal. En l'occurence, leurs
équivalents décimaux sont respectivement 10 et 15.

Cela nous amène aux décompositions suivantes (en hexa) :

5AF = 500 + A0 + F

Et en décimal :

5AFh = (5 * 162) + (10 * 161) + (15 * 160)

Avec le nombre hexadécimal E3.B :

161 160 16-1


E 3 B

Décomposition décimale :

E3.Bh = (E * 161) + (3 * 160) + (B * 16-1)


E3.Bh = (14 * 16) + (3 * 1) + (13 * 0.0625)

Remarque : la somme donne la valeur décimale du nombre...

Décomposition dans la base propre au nombre

Notez que jusqu'à présent nous n'avons fait les décompositions qu'en décimal. Mais une décomposition
peut très bien se faire dans la base propre au nombre à décomposer ! Ou même dans une autre...

Plus concrètement, au lieu d'écrire 2 pour la base binaire, nous pouvons écrire 10b car 10b correspond à
2 en décimal. Idem pour les puissances (les rangs) qui s'écriront dans la base choisie.
http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 4 sur 11
La décomposition qui suit ne comporte QUE des nombres binaires :

101.01 = 1010 + 100 + 10-10

Ne lisez pas "dix", "cent" mais bien des nombres binaires...

De même, les décompositions peuvent se faire en hexadécimal. Sachant que le nombre 10h correspond à
16 en décimal, la décomposition suivante ne comporte QUE des nombres hexadécimaux :

E3.B = (E * 101) + (3 * 100) + (B * 10-1)

Ce point s'éclaircira quand nous aborderons les conversions.

Décompositions mixtes

Nos premières décompositions étaient mixtes, car nous mélangions du binaire et du décimal. Pourquoi ne
pas mélanger de l'hexadécimal avec du binaire ? Il suffit de convertir tous les nombres en la base voulue
(une simple calculatrice suffit pour l'instant).

Nous décidons de décomposer le nombres hexadécimal 5AF en nombres binaires. Pour cela, quelques
conversions s'imposent :

5h = 101b
Ah = 1010b
Fh = 1111b
10h = 10000b (16d)

La décomposition en binaire :

5AFh = (101 * 1000010) + (1010 * 100001) + (1111 * 100000)

Durant ce cours, notre progression nous permettra de nous passer de la calculatrice pour de plus en plus
de calculs. Nous allons donc apprendre les conversions manuelles au chapitre suivant.

http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 5 sur 11


3. Conversions
Vers le décimal

Comme vous l'avez sans doute remarqué précédemment, la valeur décimale de n'importe quel nombre est
la somme des produits (chiffre * baserang), le tout exprimé en décimal.

101.01b à convertir en décimal:

101.01b = 22 + 20 + 2-2
101.01b = 4 + 1 + 0.25
101.01b = 5.25d

Ces conversions sont des décompositions en décimal, dont on exécute le calcul.

E3.Bh à convertir en décimal:

E3.Bh = (14 * 161) + (3 * 160) + (11 * 16-1)


E3.Bh = (14 * 16) + (3 * 1) + (13 * 0.0625)
E3.Bh = 224 + 3 + 0.8125
E3.Bh = 227.8125d

Depuis le décimal

Première méthode

70d à convertir en binaire.

70 / 2 = 35 reste 0
35 / 2 = 17 reste 1
17 / 2 = 8 reste 1
8 / 2 = 4 reste 0
4 / 2 = 2 reste 0
2 / 2 = 1 reste 0
1 / 2 = 0 reste 1

Le nombre obtenu se compose des restes en commençant par le dernier.

On a donc 70d = 1000110b

395d à convertir en hexadécimal.

395 / 16 = 24 reste 11
24 / 16 = 1 reste 8
1 / 16 = 0 reste 1

L'équivalent hexadécimal de 11 est B.

On a donc 395d = 18Bh

Seconde méthode

65650d à convertir en hexadécimal.

La plus grande puissance de 16 dans 65650 est 16^4 (65536).


65650 / 65536 = 1 reste 114
La plus grande puissance de 16 dans 114 est 16^1 (16).
114 / 16 = 7 reste 2
La plus grande puissance de 16 dans 2 est 16^0 (1).
2 / 1 = 2 reste 0

Les seuls rangs remplis seront les 4, 1 et 0 avec respectivement 1, 7 et 2.


http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 6 sur 11
On a donc 65650d = 10072h.

520d à convertir en binaire.

La plus grande puissance de 2 dans 520 est 2^9 (512).


520 - 512 = 8
La plus grande puissance de 2 dans 8 est 2^3 (8).
8 - 8 = 0

Ici la procédure est plus simple car la plus grande valeur que peut prendre un bit est 1... Les deux seuls
bits à 1 du nombre binaire seront aux rangs 9 et 3 : 1000001000

On a donc 520d = 1000001000b

Binaire vers hexadécimal

Sachant que Fh = 1111b, il est simple de convertir chaque quartet du nombre binaire en un chiffre
hexadécimal. Il suffit après de réassembler les chiffres pour obtenir le nombre converti.

Avec 1001101010b à convertir en hexadécimal :

bin: 10 0110 1010


hex: 2 6 A

On a donc 1001101010b = 26Ah.

Hexadécimal vers binaire

C'est l'inverse, on isole les chiffres du nombre hexadécimal et on les converti en binaire. Il suffit ensuite
de juxtaposer les quartets.

Avec B8h à convertir en binaire :

hex: B 8
bin: 1011 1000

On a donc B8h = 10111000b.

http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 7 sur 11


4. Arithmétique binaire
Addition

0+0=0
0+1=1
1+1=10 et non 2! Il y a simplement eu une retenue:

1
1
+ 1
-------
1 0

Le principe reste le même avec de longs nombres et de nombreux termes...

1 11
100001
+ 11001011
+ 10000001
-------------
101101101

Voici le détail de l'opération (de droite à gauche)

1+1+1 = 1 retenue 1
1+0+1+0 = 0 retenue 1
1+0+0+0 = 1
0+1+0 = 1
0+0+0 = 0
1+0+0 = 1
1+0 = 1
1+1 = 0 retenue 1
1 = 1

Les retenues sont toujours de 1 :)

Soustraction

On peut soustraire deux nombres binaires comme dans toutes les bases, avec la méthode apprise au
primaire. Mais le concept de soustraction introduit une nouvelle notion, celle des nombres relatifs. En
algèbre, on ajoute un signe -, mais en informatique, seuls des 0 et des 1 existent! Il faut donc adopter
une convention, celle des nombres signés: un nombre signé dont le bit de poids fort est 1 est un nombre
négatif.

Par exemple l'octet 10101010 est un nombre négatif. Sa valeur absolue est 0101010. Mais attention, son
opposé n'est pas 00101010! Pour obtenir l'opposé d'un nombre binaire signé, il faut lui appliquer le
complément à deux: inverser tous les bits du nombre, et additionner 1.

10101010
inversion: 01010101 (complément à 1)
incrémentation: 01010110 (complément à 2)

L'opposé de 10101010 est donc 01010110. Vous remarquerez qu'on ne peut pas convertir ces nombres
directement vers d'autres bases, car il s'agit de notations conventionnelles.

Pour effectuer la soustraction, additionnez le premier terme et le complément à 2 du second, et ignorez la


dernière retenue.

On veut soustraire les deux octets signés 00000101 (5d) et 00000011 (3d).
Le complément à 2 de 00000011 est 11111100+1 soit 11111101.

1111 1
http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 8 sur 11
00000101
+ 11111101
----------
00000010

On obtient bien 00000010 (2d). Vous remarqurez que la dernière retenue (celle de la dernire addition) a
été ignorée car elle nous ferait dépasser les 8 nombres que peuvent contenir un octet...

Multiplication

La multiplication en binaire est très simple:

0*0=0
0*1=0
1*1=1

Il suffit donc de recopier le le multiplicande si le multiplicateur est 1...

101
* 110
-------
000
101
+ 101
-------
11110

Dans le cas des multiplications par 10b, 100b, 1000b (10nb) on procède comme dans les autres bases: on
décale la virgule vers la droite. En binaire, on parle de décalage de bits vers la gauche:

10*10=100
10*100=1000
10*1000=10000

Dans la plupart des langages de programmation, l'opération a<<b sert à décaler chaque bit du nombre a de
b rangs vers la gauche (multiplie par 2 à chaque décalage).

Division

La division euclidienne fonctionne aussi en binaire:

111 | 11
- 11 |----
----- | 10
01 |
- 0 |
-----|
1 |

111/11 = 10 reste 1.

Pour diviser par 10nb, on peut décaler la virgule vers la gauche (ou les bits vers la droite):

1000/10=100
1000/100=10
1000/1000=1

A l'instar de l'opérateur >>, l'opération a>>b sert à décaler chaque bit du nombre a de b rangs vers la
droite (divise par 2 à chaque décalage).

http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 9 sur 11


5. Opérations logiques
Opérateurs logiques

A l'instar des 4 opérateur arithmétiques + - * / on dispose de 4 opérateurs logiques qui fonctionnent à peu
près de la même façon mais qui ne sont utilisés qu'en binaire.

AND (ET) opérateur binaire


OR (OU) opérateur binaire
XOR (OU Exclusif) opérateur binaire
NOT (NON) opérateur unaire

Un opérateur binaire requiert deux bits en entrée, alors qu'un opérateur unaire n'en demande qu'un.

Fontionnement

Les programmeurs savent que ces opérateurs logiques sont souvent utilisés pour comparer des données
variables, et continuer en fonction du résultat. Nous allons étudier la sortie de ces opérateurs en fonction
de(s) entrée(s).

AND retourne 1 si les deux bits sont à 1.


OR retourne 1 si un ou les deux bits sont à 1.
XOR retourne 1 si un seul des deux bits est à 1.
NOT inverse le bit en entrée.

Tables de vérité

Une table de vérité pour une opération logique donnée consiste en un tableau contenant le(s) entrée(s) et
la sortie.

Opération Entrées Sortie


AND 00 0
AND 01 0
AND 11 1
OR 00 0
OR 01 1
OR 11 1
XOR 00 0
XOR 01 1
XOR 11 0
NOT 0 1
NOT 1 0

De longues opérations

Le fait de placer NOT devant une autre opération logique inverse le bit de sortie.

NOT AND 0 0 = 1
NOT AND 0 1 = 1
NOT AND 1 1 = 0

NOT OR 0 0 = 1
NOT OR 1 0 = 0
NOT OR 1 1 = 0

NOT XOR 0 0 = 1
http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 10 sur 11
NOT XOR 0 1 = 0
NOT XOR 1 0 = 1

Pour une plus grande lisibilité, on pourrait écrire par exemple:

NOT (AND 0 0) = NOT 0 = 1

On peut s'amuser à combiner les opérations logiques:

OR 0 (NOT (AND 0 0)) = OR 0 (NOT 0) = OR 0 1 = 1

A vous de traduire ces opérations logiques pour obtenir des instructions conditionnelles!

Copyright © 2004 Patrice Blanchardie. Permission est donnée de distribuer, copier, modifier des copies de ce document provenant de
www.micromany.net sous les termes de la GNU FDL.

http://www.micromany.net/location_id=doc-0-0 24/12/2004 Page 11 sur 11