You are on page 1of 4

Mandragor - Tutoriels Page 1 sur 4

Mandragor
Accueil

Le systeme numérique > Les différentes bases

Les différentes bases


Introduction
Comme vous avez surement dû déjà en entendre parler, l'unité fondamentale en
informatique est le bit. Un bit est une entité qui peut prendre uniquement deux valeurs: 0
ou 1. Cela correspond plus physiquement à un état électrique, nul pour 0 ou non-nul pour
1.

Or un bit n'est pas suffisant pour coder tout les informations que l'on souhaiterait
manipuler. On va donc employer des groupement de plusieurs bits. Un octet (en anglais
byte, à ne pas confondre avec bit) est un regroupement de 8 bits.

0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

On numérotera les bits de la facon suivante: de la droite vers la gauche, en partant de 0.


Le bit 0 est couramment appelé bit de poids faible, le bit le plus à gauche est quant à lui
appelé bit de poids fort (low-order bit and high-order bit en anglais).

Un groupe de 16 bits, soit deux bytes, est appelé un mot (word en anglais). Le byte de
gauche est appelé byte de poids fort, le byte de droite byte de poids faible.

Un groupe de 32 bits, soit 2 mots, est appelé un mot long. Le mot de gauche est appelé
byte de poids fort, le byte de droite byte de poids faible.

Attention: toutes les conversions à suivre se basant sur le binaire ou l'hexadécimal sont
valables pour des nombres binaires dont le bit de poids fort est 0, et pour les nombres
hexadécimaux dont le premier chiffre est strictement inférieur à 8. Dans le cas contraire,
on tombe dans le cas de nombre négatifs, cas que nous détaillerons plus tard.

Notations
Le fait de disposer d'autant de bases a un léger inconvénient: si je vous donne le nombre
10, s'agit-il du nombre 10 en base décimale (10), celui qu'on est habitué à rencontrer, ou
bien alors du nombre en base binaire, qui vaut 2 en base décimale? Pour pallier à ce
problème, plusieurs notations sont utilisées. On fait parfois suivre le nombre d'un
caractère exprimant la base:

b pour la base 2 (binaire)


o pour la base 8 (octale)
d pour la base 10 (décimale)

http://www.mandragor.org/tutoriels/le_systeme_numerique/1 17/06/2009
Mandragor - Tutoriels Page 2 sur 4

h pour la base 16 (hexadécimale)

Notre 10 sera donc écrit en base décimale sous la forme 10d, et 10b sera sa forme finaire.
Un autre notation est de placer le nombre entre parenthèse et de spécifier la dimension de
la base en indice. En aura ainsi (10)2 et (10)10.

Conversion binaire -> décimal


Nous avons traditionnellement appris à compter en base 10, c'est à dire que les nombres
que nous manipulons sont constitués de 10 chiffres allant de 0 à 9. Le binaire est une base
2, et les nombres que nous manipuleront seront constitués de 2 chiffres, le 0 et le 1.
Avant d'expliquer les conversions binaire->décimal (base 2 -> base 10), je vais quand
même vous faire remarquer quelque chose. Prenons un nombre quelconque, mettons
1429, en base 10. Ce nombre peut-être décomposé de la manière suivante:

1429 = 1000 + 400 + 20 + 9 = 1*103 + 4*102 + 2*101 + 9*100

Un nombre peut donc être décomposé sous la forme de la somme de chacun des chiffres
qui le composent, multipliés par la dimension de la base à l'exposant de leur rang. Cette
méthode n'est pas valable uniquement pour les nombres décimaux. J'arrive donc à mon
système binaire, avec un autre nombre pris au hasard.

01011010

La première chose à faire est de numéroter les bits comme nous l'avons vu un peu plus
haut.

0 1 0 1 1 0 1 0

7 6 5 4 3 2 1 0

Et maintenant appliquons la formule trouvée:

01011010 = 1*21 + 1*23 + 1*24 + 1*26


= 2 + 8 + 16 + 64
= 90

90 est donc l'équivalent de 01011010 en base 10.

Conversion décimal->binaire
La, c'est un peu plus ennuyeux. En fait il faut diviser le nombre décimal en somme de
puissances de 2. Par exemple, 149 peut s'écrire 128 + 16 +4 + 1. Il n'y a pas vraiment de
secret... les puissances de 2 c'est bien pratique de les savoir par coeur. Retenez quelques
valeurs clés, par exemple 28 = 256, 216=65536. Vous retrouverez les autres en divisant
ou en multipliant par 2, c'est plus pratique que de passer par 20 si on cherche 29.

Bon je vais quand même essayer de détailler comment je trouve ma décomposition. La


puissance de 2 immédiatement inférieure à 149, c'est 128 (-> 27). On aura donc 149 =
128 + quelquechose. On regarde maintenant la puissance de 2 directement inférieure à
128, soit 64. On remarque que si on additionne 128 et 64, on dépasse notre 149, on
n'aura donc pas de 64 dans notre décomposition. On cherche donc la puissance de 2

http://www.mandragor.org/tutoriels/le_systeme_numerique/1 17/06/2009
Mandragor - Tutoriels Page 3 sur 4

encore immédiatement inférieure, 32, pareil, donc pas de 32. On arrive ensuite à 16, là
128 + 16 = 144 < 149, on rajoute donc 16 à notre somme. Bon, là le reste c'est pareil,
enfin là on n'a plus qu'une différence de 5, j'espère que vous savez écrire 5 = 4 + 1 :).

L'hexadécimal
C'est d'ordinaire une base qui semble un peu compliquée. En effet, sa dimension est de
16, c'est à dire qu'il faut 16 chiffres différents pour former un nombre. Et comme notre
bon vieux alphabet latin ne nous donne que dix chiffres (il nous en manque donc 6), et
bien au lieu de créer 6 nouveaux chiffres on a décidé d'utiliser les lettres. Les chiffres
composant le système hexadécimals ont donc 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Mais pourquoi avoir créé un système hexadécimal me direz vous? Et bien le binaire, c'est
bien sympathique, mais à partir du moment où on commence à travailler sur des nombres
relativement important, les chaines de 0 et de 1 commencent par ne plus en finir. Le
système hexadécimal permet de coder des nombres importants avec très peu de
caractères (4 chiffres suffisent à coder 65536 états différents!), et de plus comme nous
allons le voir par la suite les conversions binaire->hexadécimal et hexadécimal->binaire
sont particulièrement aisées.

Conversion hexadécimal -> décimal.


Il faut utiliser la même méthode que pour la conversion binaire->décimal. Je prendra donc
juste un rapide exemple:

229A = 2*163 + 2*162 + 9*161 + 10*160


= 2*4096 + 2*256 + 9*16 + 10
= 8192 + 512 + 144 + 10
= 8860

Conversion décimal -> hexadécimal.


Idem que pour le décimal->binaire, sauf que maintenant il faut décomposer notre nombre
en puissance de 16. C'est très chiant, mais attention, à la base l'hexadécimal c'est pas
trop fait pour ca... Enfin voici quand même un exemple, mettons 110. 110 c'est 6*16 +
14. Or en hexa, 14 se représente par E. Notre nombre hexadécimal sera donc 6E.

Conversion hexadécimal -> binaire


Noon, ne partez pas :) En fait justement c'est pas compliqué. La mauvaise méthode serait
de convertir d'abord de hexadécimal en décimal, puis de décimal en binaire. C'est
possible, mais ca ferait pas mal d'opérations assez compliquées. Ce qu'il faut savoir c'est
que un chiffre hexadécimal correspond à 4 bits. Il suffit de convertir un à un chaque
chiffre hexadécimal en binaire et de les mettre les un à la suite des autres.

Par exemple notre 6E ci dessus, 6h = 0110b, et Eh = 14d = 1110b. 6E donnera donc en


binaire 01101110. C'est pas plus compliqué que cela :)

Conversion binaire->hexadécimal
La non plus, c'est pas bien dur. Prenons un mot: 0011011100101101b. Voyons voir
combien cela fait en hexadécimal. La première chose à faire est de diviser ce mot en
sections de 4 bits chacune -> 1011 0111 0010 1101. Maintenant pour chaque groupe de 4
bits (nibble en anglais) on va associer le chiffre hexadécimal correspondant.

http://www.mandragor.org/tutoriels/le_systeme_numerique/1 17/06/2009
Mandragor - Tutoriels Page 4 sur 4

0011b = 3d = 3h
0111b = 7d = 7h
0010b = 2d = 2h
1101b = 13d = Dh

Notre mot 0011011100101101 en binaire vaut donc 372D en hexadécimal :).

L'octal
L'octal est une base 8, composée des chiffres allant de 0 à 7. Je ne détaillerai pas les
calculs ici, étant donné que cette base est très rarement utilisée (pour être franc je n'ai
jamais eu à y faire appel) et que de plus les conversions se font de la même manière que
les autrs.

Le systeme numérique > Les différentes bases

Mandragor.org - 2006

http://www.mandragor.org/tutoriels/le_systeme_numerique/1 17/06/2009

You might also like