LE CODAGE BINAIRE
L'homme calcule depuis 2000 ans avant Jésus-Christ avec 10 chiffres (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), on parle alors de base décimale (ou base 10).
Toutefois dans des civilisations plus anciennes ou pour certaines applications actuelles d'autres bases de calcul ont et sont toujours utilisées :
base sexagésimale (60), utilisée par les Sumériens. Cette base est également utilisée dans le système horaire actuel, pour les minutes et les secondes ;
base vicésimale (20), utilisée par les Mayas ;
base duodécimale (12), utilisée par les anglo-saxons dans leur système monétaire jusqu'en 1960 : un « pound » représentait vingt « shilling » et un « shilling » représentait douze « pences ». Le système d'heure actuel fonctionne également sur douze heures (notamment dans la notation anglo-saxonne) ;
base quinaire (5), utilisée par les Mayas ;
base binaire (2), utilisée par l'ensemble des technologies numériques.
1 Qu’est ce qu’une base ?
Les bases en technologie numérique :
La base 2 : le binaire
Ses Unités :
La base 16 : l’hexadécimale
0 à 9 puis A, B, C, D, E, F
Cette base permet le comptage des mots binaires :
1 caractère Hexa = 1quartet sur 4 bits = valeur de 0 à 15
Exemple :
Présentation du binaire
Vers la fin des années 30, Claude Shannon démontra qu'à l'aide de « contacteurs » (interrupteurs) fermés pour « vrai » et ouverts pour « faux » il était possible d'effectuer des opérations logiques en associant le nombre 1 pour « vrai » et 0 pour « faux ».
Ce codage de l'information est nommé base binaire.
C'est avec ce codage que fonctionnent les ordinateurs. Il consiste à utiliser deux états (représentés par les chiffres 0 et 1) pour coder les informations.
2 Pourquoi le binaire ?
Binaire et électricité ?
La connaissance du binaire est nécessaire lorsque des systèmes numériques et informatiques sont utilisés, notamment sur les systèmes industriels :
3 - Le Bit
Le terme bit (b avec une minuscule dans les notations) signifie « binary digit », c'est-à-dire les chiffres ZERO ou UN en numérotation binaire. Il s'agit de la plus petite unité d'information manipulable par une machine numérique. Il est possible de représenter physiquement cette information binaire :
par un signal électrique, magnétique ou lumineux , qui, au-delà d'un certain seuil, passe directement de la valeur 0 à la valeur 1 ;
grâce à des bistables, c'est-à-dire des composants électroniques qui ont deux états d'équilibre (l'un correspond à l'état 1, l'autre à 0).
Avec 1 bit il est ainsi possible d'obtenir deux états :
soit 1, soit 0.
Grâce à 2 bits, il est possible d'obtenir 4 états différents (2*2) :
| Valeur binaire sur 2 bits | Valeur décimale |
4 combinaisons | 00 | 0 |
01 | 1 | |
10 | 2 | |
11 | 3 |
Avec 3 bits, il est possible d'obtenir 8 états différents (2*2*2) :
| Valeur binaire sur 3 bits | Valeur décimale |
8 combinaisons | 000 | 0 |
001 | 1 | |
010 | 2 | |
011 | 3 | |
100 | 4 | |
101 | 5 | |
110 | 6 | |
111 | 7 |
Etc…Pour un groupe de n bits, il est possible de représenter 2^n valeurs.
Avec 3 bits, il est possible d'obtenir 8 états différents (2*2*2) :
| Valeur binaire sur 3 bits | Valeur décimale |
8 combinaisons | 000 | 0 |
001 | 1 | |
010 | 2 | |
011 | 3 | |
100 | 4 | |
101 | 5 | |
110 | 6 | |
111 | 7 |
Etc…Pour un groupe de n bits, il est possible de représenter 2^n valeurs.
Application : Continuer le comptage après le chiffre 7 :
Valeur binaire | Valeur décimale |
| |
| |
| |
| |
| |
| |
| |
Poids des bits
Dans un nombre binaire, la valeur d'un bit, appelée poids, dépend de la position du bit en partant de la droite.
A la manière des dizaines, des centaines et des milliers pour un nombre décimal, le poids d'un bit augmente d'une puissance de 2 en allant de la droite vers la gauche comme le montre la flèche rouge dans le tableau suivant :
Poids | 2^7 = 128 | 2^6 = 64 | 2^5 = 32 | 2^4 = 16 | 2^3 = 8 | 2^2 = 4 | 2^1 = 2 | 2^0 = 1 |
Nombre binaire | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
| Poids le plus fort ↓ | … | … | … | … | … | … | Poids le plus faible ↓ |
Application : Quel est le bit de poids fort de ce nombre : 10110111
Quelle est sa valeur décimale ?
Application : Quel est le bit de poids faible de ce nombre : 10110110
Quelle est sa valeur décimale ?
En comparant les bits de poids faible, Que constatez-vous ?
4 - L’OCTET (BYTE)
L'octet (en anglais byte ou B avec une majuscule dans les notations) est une unité d'information composée de 8 bits. Il permet par exemple de stocker un caractère, tel qu'une lettre ou un chiffre.
Byte = de 0000 0000
à 1111 1111
Un quartet
Ce regroupement de nombres par série de 8 permet une meilleure lisibilité, au même titre que l'on apprécie, en base décimale, de regrouper les nombres par trois pour pouvoir distinguer les milliers. Le nombre « 1 256 245 » est par exemple plus lisible que « 1256245 ».
Pour un octet, le plus petit nombre est 0 (représenté par huit ZERO 0000 0000), et le plus grand est 255 (représenté par huit UN : 1111 1111), ce qui représente 256 possibilités de valeurs différentes.
2^7 =128 | 2^6 =64 | 2^5 =32 | 2^4 =16 | 2^3 =8 | 2^2 =4 | 2^1 =2 | 2^0 =1 | Décimal |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 255 |
5 - Le MOT (WORD) :
Une unité d'information composée de 16 bits est généralement appelée MOT (en anglais WORD). Un « WORD » peut coder des valeurs de 0 à 65535 (soit 2^16-1)
WORD : de 0000 0000 0000 0000
à 1111 1111 1111 1111
Dans un automate, il s’écrira %MW x (Par exemple %MW 0)
Une unité d'information de 32 bits de longueur est appelée MOT DOUBLE (en anglais DOUBLE WORD, d'où l'appellation DWORD). Un « DWORD » peut coder des valeurs de 0 à 4 294 967 295 (soit 2^32-1)
Dans un automate, il s’écrira %MD x (Par exemple %MD 0)
Dword : De 0000 0000 0000 0000 0000 0000 0000 0000
à 1111 1111 1111 1111 1111 1111 1111 1111
les DWORD sont souvent signés + ou - et ne comportent que 31 bits de valeurs. Le dernier bit (de poids fort) comportant le signe + ou -.
KiloOctets, MégaOctets
Longtemps l'informatique s'est singularisée par l'utilisation de différentes valeurs pour les unités du système international. Ainsi beaucoup d'informaticiens ont appris que 1 kilooctet valait 1024 octets. Or, depuis décembre 1998, l'organisme international IEC a statué sur la question.
(http://physics.nist.gov/cuu/Units/binary.html).
Voici donc les unités standardisées :
Un kilooctet (ko ou kB) = 1000 octets
Un Mégaoctet (Mo ou MB) = 1000 ko = 1 000 000 octets
Un Gigaoctet (Go ou GB) = 1000 Mo = 1 000 000 000 octets
Un Téraoctet (To) = 1000 Go = 1 000 000 000 000 octets
Attention ! De nombreux logiciels (parfois même certains systèmes d'exploitation) utilisent toujours la notation antérieure à 1998 pour laquelle :
Un kilooctet (ko) = 2^10 octets = 1024 octets
Un Mégaoctet (Mo) = 2^20 octets = 1024 ko = 1 048 576 octets
Un Gigaoctet (Go) = 2^30 octets = 1024 Mo = 1 073 741 824 octets
Un Téraoctet (To) = 2^40 octets = 1024 Go = 1 099 511 627 776 octets
Il est également utile de noter que la communauté internationale dans son ensemble utilise préférentiellement le nom de « byte » plutôt que le terme « octet » purement francophone. Cela donne les notations suivantes pour kilobyte, mégabyte, gigabyte et terabyte :
Voici une capture d'écran du logiciel Internet Explorer, navigateur internet, montrant l'utilisation de cette notation :
6 - Les Conversions
Conversion de décimal à binaire :
Préparer un tableau de 8 colonnes
Notez les 8 valeurs suivantes en titre de colonne : 128, 64, 32, 16, 8, 4, 2, 1
Voir la vidéo explicative : https://youtu.be/_kpAWHDsVzA
Prenons par exemple ce nombre : 29
Résultat : 29 = 16+8+4+1 donc correspond au nombre 00011101
Prenons un autre nombre (au hasard ?) : 63.
Comme 63 est juste avant 64 (qui est en septième position),
cela donne 6 « 1 » à la suite : 111111
Conversion de binaire à décimal, c’est encore plus simple :
C’est le même principe mais à l’envers : on additionne les poids qui ont une valeur « 1 » :
Pour convertir un mot binaire en nombre décimal, il suffit de multiplier la valeur de chaque bit par son poids, puis d'additionner chaque résultat. Ainsi, le mot binaire 0101 vaut en décimal :
Poids | 2^3 = 8 | 2^2 = 4 | 2^1 = 2 | 2^0 = 1 |
Nombre binaire | 0 | 1 | 0 | 1 |
0101 = 8x0 + 4x1 + 2x0 + 1x1
= 0 + 4 + 0 + 1�0101 = 5
Autre exemple : 1001101 = (1x64)+ (0x32)+ (0x16)+ (1x8)+ (1x4)+ (0x2)+ (1x1)
Ce qui donne 1+4+8+64 = 77
Donc 1001101 = 77
Opérations en binaire
Les opérations arithmétiques simples telles que l'addition, la soustraction et la multiplication sont faciles à effectuer en binaire.
Addition binaire
L'addition en binaire se fait avec les mêmes règles qu'en décimale : �On commence à additionner les bits de poids faible (les bits de droite) puis on a des retenues lorsque la somme de deux bits de même poids dépasse la valeur de l'unité la plus grande (dans le cas du binaire : 1), cette retenue est reportée sur le bit de poids plus fort suivant...
Par exemple :
| 0 | 1 | 1 | 0 | 1 |
+ | 0 | 1 | 1 | 1 | 0 |
= | 1 | 1 | 0 | 1 | 1 |
Multiplication binaire
La table de multiplication en binaire est très simple :
c’est un ET logique, donc le 0 est « prioritaire » et le 1 est « transparent »
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1
La multiplication binaire s’effectue selon le principe des multiplications décimal, on multiplie donc le multiplicande par chacun des bits du multiplicateur. On décale les résultats intermédiaires obtenus et on effectue ensuite l’addition de ses résultats partiels.
Par exemple :
| | | 1 | 0 | 1 | multiplicande |
x | | | 0 | 1 | 0 | multiplicateur |
| | | 0 | 0 | 0 | |
+ | | 1 | 0 | 1 | | |
+ | 0 | 0 | 0 | | | |
= | | 1 | 0 | 1 | 0 | |
7 - LES DIFFÉRENTES FORMES DE CODAGE BINAIRE.
7-1 Code binaire naturel
Ce code utilise l’expression naturelle du nombre en base 2 (système de numération binaire). Il est donc intéressant pour effectuer les opérations arithmétiques.
BASE10 | 23 | 22 | 21 | 20 |
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
2 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 0 | 1 | 0 | 0 |
5 | 0 | 1 | 0 | 1 |
6 | 0 | 1 | 1 | 0 |
7 | 0 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 |
9 | 1 | 0 | 0 | 1 |
10 | 1 | 0 | 1 | 0 |
11 | 1 | 0 | 1 | 1 |
12 | 1 | 1 | 0 | 0 |
13 | 1 | 1 | 0 | 1 |
14 | 1 | 1 | 1 | 0 |
15 | 1 | 1 | 1 | 1 |
Codage binaire naturel sur 4 bits jusqu’à 16 :
On peut constater que la colonne 20 change d’état à chaque ligne,
la colonne 21 change d’état toutes les 2 ligne,
la colonne 22 change toutes les 4 ligne, etc…
Le principal inconvénient de ce système (pour le comptage, par exemple) est que plusieurs bits changent en même temps (Exemple : de 7 à 8, tous les bits changent en même temps)
7-2 Code de Gray ou binaire réfléchi
Article détaillé : Code de Gray.
Le code de Gray, également appelé binaire réfléchi, permet de ne faire changer qu'un seul bit à la fois quand un nombre est incrémenté ou décrémenté d'une unité. Le nom du code vient de l'ingénieur américain Frank Gray, qui déposa un brevet sur ce code en 19472.
Code de Gray dans un codeur optique rotatif absolu à 13 pistes. Les treize pistes apparaissent sur tout le tour de la couronne située au niveau des deux vis cruciformes.
Principe et exemple
Le code de Gray est un codage binaire, c'est-à-dire une fonction qui associe à chaque nombre une représentation binaire. Cette méthode est différente du codage binaire naturel.
Le tableau suivant montre le codage sur 4 bits.
Codage décimal | Codage binaire naturel | Codage Gray ou binaire réfléchi | |
0 | 0000 | 0000 | |
1 | 0001 | 0001 | █ |
2 | 0010 | 0011 | ██ |
3 | 0011 | 0010 | █ |
4 | 0100 | 0110 | ██ |
5 | 0101 | 0111 | ███ |
6 | 0110 | 0101 | █ █ |
7 | 0111 | 0100 | █ |
Pour approfondir :
Pour calculer directement le code de Gray d'un entier à partir de celui de son prédécesseur on peut procéder ainsi :
lorsqu'il y a un nombre pair de ‘1’ on inverse le dernier bit ;
lorsqu'il y a un nombre impair de ‘1’ on inverse le bit directement à gauche du 1 le plus à droite.
La différence principale entre les deux est le fait que le codage de Gray de deux nombres consécutifs ne diffère que d'une position. Par exemple 5 est codé par 0111, et 6 est codé par 0101 : seul le troisième bit change.
https://upload.wikimedia.org/wikipedia/commons/a/a8/Gray_code_rotary_encoder_13-track_opened.jpg
7-3 Décimal codé binaire (DCB, ou BCD pour binary coded decimal)
Article détaillé : Décimal codé binaire.
Afin de concilier la logique binaire de l'ordinateur avec la logique humaine, on peut convertir en binaire, plutôt que les nombres eux-mêmes, chacun des chiffres qui les composent en notation décimale positionnelle. Chacun de ces chiffres est alors codé sur 4 bits :
1994 = 0001 1001 1001 0100 1×1000 + 9×100 + 9×10 + 4×1
Avec n bits (n multiple de 4), il est possible de représenter les nombres entre 0 et 10n/4-1. Soit approximativement entre 0 et 1.778n-1. Le DCB est un code redondant, en effet certaines combinaisons ne sont pas utilisées (comme 1111 par exemple).
Cette représentation évite par construction tous les problèmes gênants de cumul d'arrondi qui interviendraient lors de la manipulation de grands nombres dépassant la taille des circuits en arithmétique entière et obligent à recourir au flottant. Il est cependant possible de manipuler des nombres à précision arbitraire en utilisant un codage plus efficace que le DCB.
7-4 Le code ASCII (source wikipedia)
L'American Standard Code for Information Interchange (Code américain normalisé pour l'échange d'information), plus connu sous l'acronyme ASCII ([askiː]), est une norme informatique de codage de caractères apparue dans les années 1960.
C'est la norme de codage de caractères la plus influente à ce jour. ASCII définit 128 codes à 7 bits, comprenant 95 caractères imprimables : les chiffres arabes de 0 à 9, les lettres minuscules et capitales de A à Z, et des symboles mathématiques et de ponctuation.
Les limitations du jeu de caractères ASCII sont encore sensibles au XXIe siècle, par exemple dans le choix restreint de caractères généralement offerts pour composer une adresse email.
Les standards ASCII
Standards ASCII des États-Unis (les standards hérités, et le standard en vigueur) :
ASA X3.4-1963, (incomplet avec 28 positions libres, et un code de commande non assigné) ;
USASI X3.4-1968 (renommé rétroactivement ANSI X3.4-1968), ne normalisait pas encore toutes les positions ;
ANSI X3.4-1977 ;
ANSI X3.4:1986 (en 1986, et en vigueur aujourd'hui).
L’intérêt du code ASCII pour un système informatique (ordinateur, automate….) est de convertir un nombre binaire en caractère compréhensible et de crée des mots et des phrases :
Toutes les lettres et chiffres que vous lisez en ce moment sur ce document sont traduits en nombres binaires grâce au code ASCII par votre ordinateur ou votre Smartphone.
8 - La Conversion CNA / CAN
(Convertisseur Numérique – Analogique) / (Convertisseur Analogique - Numérique)
https://fr.wikipedia.org/wiki/Convertisseur_num%C3%A9rique-analogique
En introduction, voici 3 vidéos de vulgarisation vous permettant de comprendre dans le détail les principes de cette conversion :
8-1 Convertisseur CAn Analogique vers numérique (utilisé pour une entrée analogique)
Un convertisseur analogique-numérique (CAN, parfois convertisseur A/N, ou en anglais ADC pour Analog to Digital Converter ou plus simplement A/D) est un montage électronique dont la fonction est de traduire une grandeur analogique en une valeur numérique (codée sur plusieurs bits), proportionnelle au rapport entre la grandeur analogique d'entrée et la valeur maximale du signal.
convertisseur analogique-numérique
MCP3008 de chez Motorola
Convertisseur CAn à simple rampe
On réalise au moyen d'un compteur et d'un convertisseur numérique-analogique une rampe de tension. Un comparateur arrête le compteur lorsque la tension créée par le CNA atteint la tension à convertir. Le compteur indique alors le résultat sur N bits, qui peut être stocké ou traité.
8-2 Convertisseur CnA numérique vers Analogique (utilisé par exemple pour une sortie analogique)
Un convertisseur numérique-analogique (CNA, de N/A pour numérique vers analogique ou, en anglais, DAC, de D/A pour Digital to Analog Converter) est un composant électronique dont la fonction est de transformer une valeur numérique (codée sur plusieurs bits) en une valeur analogique proportionnelle à la valeur numérique codée.
Généralement la sortie du convertisseur est une tension électrique, mais certains convertisseurs ont une sortie en courant.
Il existe plusieurs solutions pour créer un signal analogique à partir d'un système numérique. Elle se divise en deux catégories, celles à sortie pseudo analogique (le signal en sortie contient le message analogique, mais d'autres signaux s'ajoutent à lui) ou à sortie analogique. Dans ce dernier cas, on utilise généralement des convertisseurs à réseau de résistances.
Convertisseur CnA de type Sortie analogique : Réseau de résistances
La conversion analogique à réseau de résistances repose sur le principe de la division des tensions (pont diviseur pour le réseau unaire) ou de division des courants (réseau R/2R). Dans tous les cas une adaptation d'impédance suit le montage résistif pour qu'une charge en sortie ne perturbe pas la conversion.
Avec :
Valeur numérique
Convertisseur CnA par MLI :
Sortie pseudo analogique : Modulation de largeur d'impulsion
Le principe de la modulation de largeur d'impulsion (MLI, ou PWM en anglais) est de créer un signal d'horloge dont le rapport cyclique est variable et proportionnel à la valeur codée.
Si l'on extrait la moyenne de ce signal (au moyen d'un filtre passe-bas), on obtient une valeur analogique proportionnelle à ce rapport cyclique.
Rapport cyclique (Valeur numérique, généralement sous forme de WORD)
PWM
Signal de sortie (après pré-filtrage)
Signal de sortie (lissé)
C’est le principe utilisé sur les modules ARDUINO :
Autre site de documentation : https://sitelec.org/cours/abati/cna.htm
Consigne numérique* générée par le système
Impulsions de largeur proportionnelle à la consigne
Tension résultante après un premier filtrage
Tension finale
* Cette valeur (WORD) est souvent comprise entre
0 et 10000 points
Valeur numérique
MLI
Pré-filtre
Lissage
Tension
0010101