Dernière version du 09.05.2008 00h21
Sommaire
1 Définition
2 Le code binaire
2.1 Les bits
2.2 Nombre binaire et bit de poids faible
2.3 Octet et quartet
2.4 Un petit conseil
2.5 Conversion binaire-décimal
3 Le poids des bits
4 Code BCD
5 L'octal
6 Système hexadécimal
7 Code Gray
8 L'ASCII
8.1 Table ASCII
[modifier (
modifier-21-section-1.cours)]Définition
Qu'est-ce qu'un code ? C'est un langage ou un système construit sur une base.
Cela ne vous avance guère ? Pourtant vous en utilisez tous les jours !
- L'alphabet latin (26 caractères): ABCDEFGHIJKLMNOPQRSTUVWXYZ
- Le code décimal ou base 10 (10 caractères d'où le déci) : 0123456789
Moi je vais vous parler des langages :
- binaire (base 2) : 01
- octal (base 8) : 01234567
- hexadécimal (base 16) : 0123456789ABCDEF
- ASCII (128 caractères) : Vous comprendrez que je ne les note pas ici

- BCD (Binary coded décimal): chaque chiffre binaire est codé sur un quartet (demi byte), donc sur 4 bits.
- Code Gray (ou binaire simplifié, base 2)
Tout ces langages (sauf peut-être l'octal) sont activement utilisés dans le domaine du numérique (programmation, traitement de données, ...). Je vais vous les présenter un à un, vous expliquer comment changer leur base (binaire → hexadécimal par exemple) et finalement, vous donner une table donnant les 127 premiers nombres dans ces différents langages.
[modifier (
modifier-21-section-2.cours)]Le code binaire
[modifier (
modifier-21-section-3.cours)]Les bits
Le code binaire, comme son nom le laisse supposer, possède deux chiffres. Il est donc en base 2. Un chiffre binaire est appelé bit. Le mot bit est l'abbréviation de l'anglais binary digit. Physiquement, les deux états d'un bit peuvent être représentés par de nombreuses choses. Par exemple, ils peuvent être représentés par un interrupteur ouvert ou fermé. Mais par raison de commodité, on utilise les chiffres 1 et 0 et aucun autre.
[modifier (
modifier-21-section-4.cours)]Nombre binaire et bit de poids faible
Lorsque l'on regroupe plusieurs bits, on forme un nombre binaire (quel scoop me direz vous !).
Les nombres binaires se lisent de droite à gauche!. Par exemple, 1000111. Le chiffre valant le moins est celui de l'extrème droite. Il est appelé bit de poids faible. Pour marquer qu'un nombre est binaire (par exemple en langage assembleur), on ajoute un B juste derrière le bit de poids faible. Par exemple, 101B.
Pour faire simple, nous ne parlerons ici que de nombre positifs, il est possible de représenter des chiffres binaires négatifs. Mais cela nous embrouillerait actuellement, je l'aborderai par contre dans le chapitre sur l'algèbre de Boole.
J'espère que vous maîtrisez vos puissances de 2, sinon vous aurez bien de la peine avec le code binaire!
Petit rappel :
[modifier (
modifier-21-section-5.cours)]Octet et quartet
Les bits sont généralement groupés par 8. Ils forment alors un octet, ou byte en anglais.
Il arrive aussi que les bits soient groupés par 4 (dans le cas du BCD) afin de former un quartet.
[modifier (
modifier-21-section-6.cours)]Un petit conseil
Vous pouvez constater qu'entre byte et bit, il n'y a presque pas de différence, et on les confond régulièrement (Exemple: débit de la connexion internet : 128 kbps ou 128 kBps ? Presque aucune différence! Et pourtant, c'est 8 fois plus !) Pour éviter de les confondre, préférez écrire octet au lieu de byte.
[modifier (
modifier-21-section-7.cours)]Conversion binaire-décimal
La conversion binaire-décimal :
Par exemple, nous avons le chiffre suivant à convertir : 11010011
Le bit de poids faible, donc celui de droite, vaut . Le second,
, le troisième
, etc... On ne prend en compte la puissance que lorsque le bit est à 1 !
Ensuite, il ne nous reste plus qu'à faire la somme de ces puissances !
Et si c'était faux ? Eh bien... pour le vérifier, quoi de mieux que de convertir 211 en binaire ? 
Là, soit vous êtes un as des puissances de 2 et vous les soustrayez une par une en commençant par la plus grande, donc en le réécrivant par la gauche :
211-128 = 83 ⇒ 1 LSB
83-64 = 19 ⇒ 1
19-32 = -13 ⇒ 0
19-16 = 3 ⇒ 1
3-8 = -5 ⇒ 0
3-4 = -1 ⇒ 0
3-2 = 1 ⇒ 1
1-1 = 0 ⇒ 1 MSB
On remet tout ça horizontalement
⇒ C'est juste non ?
Deuxième méthode : la division par deux, on marque en marge le reste (si c'est impair) :
211/2 = 105 ⇒ 1 LSB
105/2 = 52 ⇒ 1
52/2 = 26 ⇒ 0
26/2 = 13 ⇒ 0
13/2 = 6 ⇒ 1
6/2 = 3 ⇒ 0
3/2 = 1 ⇒ 1
1/2 = 0 ⇒ 1 MSB
On remet tout ça horizontalement: 211=11010011 Moi je dirais qu'on a tout juste non ?
Dans ces deux méthodes, le bit de poids fort était en bas et le bit de poids faible était en haut. Attention à ne pas les mélanger !
[modifier (
modifier-21-section-8.cours)]Le poids des bits
Mais qu'est-ce que ces bits de poids fort/faible ? C'est pas un milieu égalitaire ?
Eh non ! Souvenez-vous, le premier bit à droite vaut et celui de gauche vaut
! Donc celui de gauche vaut plus d'où le nom de bit de poids fort (MSB pour Most Significative Bit en anglais et LSB pour Less Significative Bit). Voilà, vous êtes à présent capable de comprendre un nombre binaire.
[modifier (
modifier-21-section-9.cours)]Code BCD
Dans cette lancée, nous allons nous occuper du code BCD (Binary coded decimal) qui est une conversion simplifiée du décimal/binaire :
Chaque chiffre décimal est convertit sur 4 bits (un quartet) : 904 = 1001 0000 0100
C'est plus facile à lire, mais ça utilise évidemment davantage de mémoire (car ces langages sont faits pour être utilisés numériquement, ne l'oublions pas !).
[modifier (
modifier-21-section-10.cours)]L'octal
Le système octal utilise la base 8, il utilise donc les chiffres arabes 0-7. Il est de moins en moins utilisé. Il était utilisé à la place de l'hexadécimal. C'est du binaire réuni par triplet (ensemble de 3 bits). Exemple : en décimal =
donne 001 010 010 donne
en octal.
Sinon, on peut utiliser la deuxième méthode que je vous avais passée, sauf que l'on divise par 8 pour le décimal-octal (logique, vu la base) :
82/8 = 10 ⇒ 2 LSB
10/8 = 1 ⇒ 2
1/8 = 0 ⇒ 1 MSB
Attention à l'emplacement du MSB ici !
Et pour l'octal-décimal ?
C'est comme pour binaire-décimal avec la méthode des puissances :
bit 0 LSB =
bit 1 =
bit n =
Un petit exemple ? Prenons le nombre octal 2374 :
[modifier (
modifier-21-section-11.cours)]Système hexadécimal
Le code hexadécimal : Il utilise la base 16. Mais comme il n'y a que 10 chiffres différents dans les nombres arabes, il prend également les 6 premières lettres de l'alphabet latin : 0123456789ABCDEF
A=10, B=11, C=12, D=13, E=14, F=15
Son avantage ? Gagner de la place! Par exemple 15=1111B=FH
Hein ? H ??? Mais heu... Ça s'arrête à F non ?
Oui, oui ! Le H c'est pour marquer que c'est en hexadécimal (on pourrait aussi mettre 0x0F ou 0FH), vous vous souvenez du B pour binaire ? C'est la même chose !
C'est vrai... mais tu nous as rien dit pour le décimal !
Le décimal, c'est par défaut en principe, pas besoin de lui rajouter un D 
Pour convertir un nombre binaire en hexa ou l'inverse, le plus facile est de séparer le nombre par 4 bits et de les convertir ainsi (comme pour le BCD
). Vous voyez, comprendre le binaire c'est ce qui prend le plus de temps.
Au fait, il existe plusieurs formules de conversion. Je les connais et si je ne les mentionne pas ici, c'est pour éviter de vous embrouiller car par expérience, je sais que c'est beaucoup plus rapide avec ces quelques méthodes (sauf bien sûr pour les gros nombres de quelques centaines de bits, mais vous n'en êtes pas encore là).
[modifier (
modifier-21-section-12.cours)]Code Gray
Voyons... qu'est-ce qu'il nous reste à voir... Ah! Le code Gray ! Pour être franc, je ne l'ai pas beaucoup utilisé, il est censé nous faire gagner du temps... Je ne vais pas le mettre pour l'instant, Je complèterai peut-être plus tard.
[modifier (
modifier-21-section-13.cours)]L'ASCII
Donc, il ne nous reste plus que l'ASCII pour American Standard Code for Information Interchange.. Eeeh c'est pas parce que c'est américain et compliqué que vous devez prendre la poudre d'escampette !
C'est un code « barbare » qui est utilisé depuis fort longtemps (notamment pour lire les lettres frappées sur votre clavier). Ici, pas trop de méthode de conversion possible, juste des tables de conversion (car c'est souvent codé en binaire ou en hexadécimal). Je vais donc vous laisser ce qu'on appelle une table ASCII :
[modifier (
modifier-21-section-14.cours)]Table ASCII
Je vous ai fait une belle étude sous forme de Table ASCII (
36-table-ascii.etude) (décimal, binaire, hexadécimal, ASCII) pour vous aider à faire facilement les conversions et à vous entraîner.
Après cette table ASCII, je vais vous faire un autre petit cadeau (je suis gentil hein
) : un lien pour un convertisseur binaire/décimal/octal/hexadécimal et bien plus encore : Convutile (
http://scalpsoft.free.fr/download/convutil/convutil.zip) c'est un freeware bien sûr.