
Carte perforée selon le codage EBCDIC
Avec un seul bit, on peut représenter uniquement deux valeurs, 0 et 1.
Comme on l'a vu, on peut représenter tous les nombres avec le système binaire, ni plus ni moins qu'avec le système décimal ou tout autre système.
Seulement, ces bits vont être inscrits d'une façon ou d'une autre sur des supports matériels, cartes, puces électroniques... D'une part, ces supports vont
avoir une limite physique et, d'autre part, on ne va pas toujours avoir besoin de représenter des valeurs astronomiques.
Les cartes perforées sont les premiers systèmes de mémoire de masse utilisés pour la mécanographie sur lesquels on peut écrire et lire des données.
En général, chaque unité d'information (une lettre, un chiffre,...) est représentée sur ces cartes par la présence ou l'absence de perforations dans une même colonne.
Par exemple, un A sera représenté par des perforations sur la première et sur quatrième ligne sur les cartes IBM 80 colonnes. Bien qu'à la base le principe soit binaire
(pour chaque case, il y a une perforation ou il n'y en a pas), les liens avec les valeurs binaires ne sont pas évidents. Les choix dus aux contraintes techniques et
à l'obligation de respecter les brevets des uns et des autres impliquent des représentations plus arbitraires que logiques et donc souvent peu explicites.

Code Baudot
Le premier à utiliser le système binaire pour la représentation des données est Émile Baudot, un ingénieur en télégraphie né à Magneux dans la Haute Marne, qui a
travaillé à améliorer les transmissions télégraphiques dans les années 1870. Pour cela, il a créé une façon de coder les signaux qui sera utilisée par la suite
dans les téléscripteurs et que l'on a appelée le code Baudot.
Ce code comprenait deux jeux de 31 caractères plus un code indiquant un changement de jeu de caractères. Le premier jeu de caractères comprenait les 26 lettres de l'alphabet
et quelques caractères spéciaux, le second jeu, les chiffres de 0 à 9 et le reste des caractères spéciaux.
À chaque caractère, correspondait une valeur binaire explicite selon une logique particulière que l'on a appelée plus tard "code de gray" (00001, 00011, 00010, 00110... comme on peut le voir
sur l'illustration) ainsi qu'un ordre des symboles qui devait, aux yeux d'Émile Baudot, convenir à la télégraphie.
1
|
2
|
3
|
4
|
5
|
...
|
31
|
00001
|
00010
|
00011
|
00100
|
00101
|
...
|
11111
|
A
|
E
|
É
|
Y
|
U
|
...
|
P
|
Évidemment, avec 5 bits, on ne peut représenter que 32 éléments par "jeu de caractères". Si cela peut suffire pour coder 26 lettres majuscules et quelques signes,
cela se révèle vite insuffisant si l'on veut ajouter les minuscules, toutes les lettres accentuées dans plusieurs langues et des instructions pour les machines.

Tableau de codes ASCII US
IBM a utilisé par la suite pour ses cartes perforées l'EBCDIC, un codage sur 7 bits. Dans les années 60, on a également utilisé l'ASCII (American Standard Code
for Information Interchange), un standard sur 7 bits, pour représenter les caractères et, comme on peut le voir sur le tableau, diverses commandes comme le retour
à la ligne (Code CR - Carriage return - colonne 0 ligne 13).
Mais, comme en électronique il est judicieux d'utiliser des puissances de 2 (4, 8, 16, 32, 64...), l'informatique a très vite adopté une représentation basée sur des
séries de 8 bits que l'on a appelées "Octets".
Un octet va ainsi pouvoir représenter 256 valeurs. C'est suffisant pour représenter, selon le contexte, des petites valeurs, pas mal de symboles et de caractères,
une palette de couleurs un peu étendue ou encore des commandes à faire exécuter par le microprocesseur.
Bien sûr, on ira beaucoup plus loin en regroupant plusieurs octets pour représenter des valeurs plus grandes ou plus nombreuses, mais on continuera à dénombrer
les capacités des mémoires et des disques ainsi qu'à représenter certaines autres valeurs sur la base de ces fameux octets.
0
|
1
|
2
|
3
|
...
|
255
|
0000 0000
|
0000 0001
|
0000 0010
|
0000 0011
|
...
|
1111 1111
|
Reste à créer un système pour pouvoir retenir, écrire et lire plus facilement des séries d'octets. Déjà, en les séparant par groupes de 4 comme ci-dessus, on
y voit plus clair. 1010 1101 1000 c'est plus lisible que 101011011000. Et comme sur 4 bits on peut représenter les valeurs de 0 à 15 qui se trouvent correspondre
aux "chiffres" de 0 à F de la numérotation hexadécimale, il ne reste plus qu'à transcrire comme ci-dessous pour quelques valeurs prises au hasard :
0
|
15
|
56
|
90
|
...
|
255
|
0000 0000
|
0000 1111
|
0011 1000
|
0101 1010
|
...
|
1111 1111
|
00
|
0F
|
38
|
5A
|
...
|
FF
|
On obtient quelque chose de plus facilement lisible. Par exemple la suite F0 15 1A 2B est plus facile à manipuler pour des humains que la suite 0111 1000 0000 1010 1000 1101 0001 01011
ou que la valeur décimale correspondante, 4027914795...
Revenons à nos octets. Un octet, ce n'est pas beaucoup. Dans nos mémoires, ils vont heureusement se compter par millions. Là encore, l'informatique va apporter une
petite subtilité.
Au lieu de compter par 1000 comme on le fait pour les grammes des kilos de pomme de terre, on va parfois compter par une certaine puissance de 2 puisque la
construction des composants électroniques privilégie ces puissances de 2. Or, il se trouve que 2 puissance 10 vaut 1024. Ceci peut entraîner une certaine confusion,
un kilo-octet selon les cas représentant 1000 octets ou 1024 octets. Officiellement, il est recommandé d'utiliser le préfixe Kilo pour 1000 et le préfixe Kibi pour
1024. Mais ce distinguo n'est pas toujours respecté. Un petit tableau pour ne pas s'y perdre :
-
1 Kilooctet (Ko) = 103 = 1 000 octets
-
1 Kibioctet (Kio) = 210 = 1 024 octets
-
1 Mégaoctet (Mo) = 106 = 1 000 000 d'octets
-
1 Mébioctet (Mio) = 220 = 1 048 576 octets
-
1 Gigaoctet (Go) = 109 = 1 000 000 000 d'octets
-
1 Gibioctet (Gio) = 230 = 1 073 741 824 octets
-
1 Téraoctet (To) = 1012 = 1000 000 000 000 d'octets
-
1 Tébioctet (Tio) = 240 = 1 099 511 627 776 octets
Et vous pouvez continuer avec les pétaoctets (vs pébioctets), exaoctets (vs exbioctets), zettaoctets (vs zébioctets), yottaoctets (vs yobioctets), soit
1 million de milliards de milliards d'octets.
Encore une petite subtilité avant de passer à la suite. En français, on fera facilement la distinction entre Kilo-Bits (Kb) et Kilo-Octets (Ko).
En anglais, ce sera plus subtil. Le terme byte est parfois utilisé pour désigner un octet : Kilo-Bytes sera abrégé en KB et Kilo-bits en Kb. Vous voilà prévenus
si vous tombez sur des documents rédigés en anglais.