~ 1 ~
UNIVERSITÉ DE LUBUMBASHI
|
FACULTÉ DES SCIENCES
|
DÉPARTEMENT
|
DES MATHÉMATIQUES
|
CODAGE ET
|
TRANSMISSION
|
DES DONNÉES DANS UN RÉSEAU
|
Par KIMPEYE MUNDIBI
|
Travail de fin de cycle présenté en vue de
l'obtention du Grade de
|
Gradué en Sciences
|
Option : Mathématiques-informatique
|
Directeur : Mr. KUMAKINGA MOBIMBA
|
Année académique 2008-2009
|
|
~ 2 ~
UNIVERSITÉ DE LUBUMBASHI
|
FACULTÉ DES SCIENCES
|
DÉPARTEMENT
|
DES MATHÉMATIQUES
|
CODAGE ET
|
TRANSMISSION
|
DES DONNÉES DANS UN RÉSEAU
|
Par KIMPEYE MUNDIBI
|
Travail de fin de cycle présenté en vue de
l'obtention du Grade de
|
Gradué en Sciences
|
Option : Mathématiques-informatique
|
Année académique 2008-2009
|
|
~ 3 ~
ÉPIGRAPHE
Pour détecter et corriger les inévitables erreurs
qui affectent les échanges
d'information numérisée, les
spécialistes du codage en appellent à des
méthodes
abstraites qui relèvent de l'algèbre ou de la
géométrie.
Gilles Lachaud
~ 4 ~
DÉDICACE
A mon grand père MUNDIBI Stanislas, je dédie ce
travail de fin de cycle.
~ 5 ~
REMERCIEMENTS
Je tiens à remercier
- Dieu tout puissant pour la sagesse et l'intelligence ;
- mes compagnons jésuites de Kwetu-Kwenu et de Loyola,
- mes professeurs et leurs assistants,
- mes encadreurs de stage à la Vision Mondiale,
- mes collègues de promotion,
- mes ami(e)s de la faculté des sciences,
- les familles amies,
- mes frères, soeurs et cousin(e)s,
- mes parents ;
de m'avoir prodigué des sages conseils et encouragé
dans mes recherches.
Je tiens à exprimer ma gratitude à Monsieur Patrice
KUMAKINGA MOBIMBA, directeur de ce travail de fin de cycle. Son savoir faire et
ses multiples remarques ont donné à ce travail sa forme
définitive.
Je remercie mon supérieur de communauté et le
père ministre de ne s'être jamais lassés de répondre
à mes besoins et de consacrer du temps pour me guider dans la recherche
du bien le plus universel.
~ 6 ~
AVANT PROPOS
Nous sommes en pleine ère numérique. Qu'est-ce
à dire ? Tout simplement qu'une partie énorme des informations
échangées à travers la planète est
matériellement représentée sous la forme de nombres.
Dans les messages électroniques, la
téléphonie mobile, les transactions bancaires, le
téléguidage de satellites, la télétransmission
d'images, les disques CD ou DVD, l'information est traduite - on dit
codée (à ne pas confondre avec cryptée) - en suites de
nombres entiers, et correspondant physiquement à des signaux
électriques ou autres. Plus précisément, l'information est
généralement codée sous forme de suites de chiffres
binaires - des 0 ou des 1, appelés aussi bits.
Un problème majeur de la transmission de l'information
est celui des erreurs. Il suffit d'une petite rayure sur un disque, d'une
perturbation de l'appareillage, ou d'un quelconque phénomène
parasite pour que le message transmis comporte des erreurs, c'est-à-dire
des « 0 » qui ont malencontreusement été changés
en « 1 » ou inversement. Or, l'un des nombreux atouts du
numérique est la possibilité de détecter, et même de
corriger, de telles erreurs.
Ainsi donc, tout le problème de la théorie des
codes correcteurs d'erreurs réside dans la mise en oeuvre des codes qui
détectent et corrigent le plus possible d'erreurs, tout en allongeant le
moins possible les messages, et qui soient faciles à décoder.
~ 7 ~
LISTE DES ABRÉVIATIONS
ADSL : Asymmetrical Digital Subscriber Line
BNC CEI
ASCII : American Standard Code for Information Interchange
: Bayonet Neill - concelman Connector
: Comité Electrotechnique International
CRC : Contrôle de Redondance Cyclique
DCB :
Décimal Codé en Binaire
HTML : Hyper Text Markup Language
IP : Internet Protocol
IPv4 : Internet Protocol version 4
IRT : Integrated Rural Technology
ISO : International Standard Organization
MNP : Microcom Network Protocol
NRZ
RJ45
RTL
SMS
STP
UTP
MODEM : MOdulateur DEModulateur
: Non Return to Zero
: Registered Jack 45
: Réseau Téléphonique Commuté
: Short Message System
: Shielded Twisted Pair
: Unshielded Twisted Pair
~ 8 ~
0. 0. INTRODUCTION GÉNÉRALE
0.1. Choix et intérêt du sujet
L'homme est un être communicatif. Il cherche toujours
à mettre en place des moyens de communication. Il est conscient du souci
qui l'habite de se faire comprendre quand il pose un geste, quand il
représente un symbole ou bien quand il prononce une parole. C'est ce
souci profond de communiquer qui est à la base du développement
de plusieurs technologies modernes.
Actuellement, grâce au réseau
téléphonique, mieux, au réseau de
télécommunication et grâce à l'Internet, l'homme est
informé très rapidement de tout ce qui se passe dans n'importe
quel coin du monde. L'information circule entre les hommes, et ceux-ci forment
le réseau humain.
De même, les ordinateurs ainsi que les appareils de
communication sont en communication entre eux grâce au réseau qui
les lie. La transmission de l'information au sein de ce réseau nous
intéresse. Dès lors, nous nous proposons de
réfléchir sur l'échange des données entre deux ou
plusieurs points du réseau. Chaque point peut jouer le rôle de
l'émetteur et/ou du récepteur de l'information. Toutefois, le
message à transmettre doit tout d'abord être codé au niveau
de l'émetteur, puis transmis au canal de communication avant
d'être décodé au niveau du récepteur. C'est ce
processus de codage et de transmission des données dans un réseau
que nous voulons comprendre dans ce travail afin que les avancées
technologiques dans le domaine de la télécommunication ne nous
dépaysent pas. Et qu'à notre tour, nous puissions être
à mesure d'expliquer en termes clairs et précis ce qui se passe
lors de la transmission des données dans un réseau et pourquoi
pas apporter notre contribution dans l'implémentation d'un
système de transmission des données. Celles-ci peuvent être
la voix, l'image, le son, le texte, etc.
Dès lors, la transmission des données
désigne le transport de quelque sorte d'information que ce soit d'un
endroit à un autre. L'acception du mot donnée est la
représentation d'une information sous une forme conventionnelle
(codée) destinée à faciliter son traitement. D'où
le but d'un réseau est de transmettre des informations d'un
système à un autre, d'un ordinateur à un autre.
~ 9 ~
0.2. Etat de la question
Historiquement, la transmission des données se faisait
par courrier papier, une chaîne de feux ou de sémaphores, puis le
Morse sur des fils en cuivre. Dans le vocabulaire informatique, la transmission
des données signifie l'envoi de flux de bits d'un endroit à un
autre en utilisant des technologies, comme le fil de cuivre, la fibre optique,
le laser, la radio, la lumière infrarouge, le Bluetooth.
La théorie de l'information, comme branche des
mathématiques, a été formalisée par Claude Shannon
[1948]. A la suite de Shannon, Richard Hamming a développé les
prémisses de la théorie des codes. Plusieurs autres chercheurs se
sont intéressés aux différents aspects de cette
théorie de l'information. Leurs recherches ont conduit aux
résultats puissamment exploités dans le domaine des
télécommunications. Ainsi, les questions, concernant les
systèmes de traitement numérique pour la transmission des
données sur des réseaux filaires et/ou sans fil, ne cessent
d'être à l'ordre du jour dans les travaux académiques et
scientifiques. Les résultats de ces recherches apportent pas mal de
lumières dans la compréhension et la maîtrise de la
cybernétique.
La théorie de l'information, fondement des
communications modernes, se développe encore actuellement. Aussi, le
secteur informatique n'est-il pas resté en marge de ce
développement. La multiplicité des codes a permis la
compréhension de l'échange entre l'homme et la machine d'une part
; et d'autre part, elle a permis d'explorer le langage machine, seul langage
que l'ordinateur comprend.
Partant du code ASCII, nous voulons mettre en lumière
les différentes possibilités des raccourcis que certaines touches
du clavier d'un ordinateur ou d'un appareil téléphonique offrent
dans la saisie des caractères, avant que ces caractères soient
envoyés vers une destination quelconque, via un réseau.
Plusieurs chercheurs tels que P. Arnoux, Gilles Lachaud ont eu
à réfléchir sur le codage et les mathématiques. Ils
ont centré leurs recherches sur les codes géométriques,
découvertes à partir de la géométrie
algébrique, en vue de construire des codes plus performants que ceux
prédits par les travaux de Shannon.
~ 10 ~
0.3. Problématique
Le but d'un réseau est de transmettre des informations
d'un système à un autre, d'un ordinateur à un autre. Ces
informations à transmettre doivent être codées avant leur
transmission de la source à la destination dans un réseau. Cette
transmission doit être sans erreurs. Et pourtant, un problème
majeur de la transmission de l'information est celui des erreurs. Il suffit
d'une petite perturbation de l'appareillage pour que le message transmis
comporte des erreurs.
Dans ce travail, nous nous proposons de retracer le processus
qui décrit la manière dont une information est envoyée
d'une source à une destination. Mieux, nous voulons comprendre ce qui se
passe dans un réseau lorsqu'un message est codé, transmis, puis,
décodé. Nous allons mettre l'accent sur le fait que les erreurs
lors de la transmission de l'information sont détectées et
corrigées en rallongeant les mots du message de façon
qu'après dégradation, on puisse quand même
reconnaître les mots envoyés. Ces mécanismes de codage et
de décodage sont pris en charge par des protocoles spécifiques de
communication.
La représentation des données peut se diviser en
deux catégories :
La première catégorie concerne une
représentation numérique. Il s'agit ici du codage de
l'information en un ensemble de valeurs binaires, soit une suite de 0 et de 1.
La deuxième catégorie renferme une représentation
analogique : c'est-à-dire la donnée est représentée
par la variation d'une grandeur physique continue.
De ces deux catégories, nous allons plus nous
intéresser aux données numériques sachant que les
données analogiques peuvent se convertir en données
numériques avant leur transmission. Aussi le code de HAMMING sera
exploité dans l'élaboration de l'algorithme de transmission des
données sans erreur. Un exemple simulera un cas de transmission d'une
phrase d'un émetteur à un récepteur. Cet exemple, dans le
cas d'un réseau téléphonique, peut simuler l'envoi de la
phrase « J'ai lu le livre. Magnifique !» via un
sms.
~ 11 ~
0.4. Hypothèse
Le langage binaire, fondement de notre hypothèse,
permet d'expliciter le processus de transmission des données dans un
réseau, car le codage de l'information se fait dans l'alphabet binaire 0
et 1.
Partant du code ASCII, nous reconnaissons que chaque
caractère du clavier d'un ordinateur ou d'un téléphone est
en bijection avec une suite de « 1 » et de « 0 ». Cette
succession de « 1 » et de « 0 » correspond au
caractère que la machine connaît. L'étude de cette
bijection entre un caractère et la suite de « 1 » et de «
0 » servira comme toile de fond à notre problématique. Elle
permettra aussi de démontrer l'efficacité du code dans
l'utilisation du clavier pour représenter un caractère
accentué ou non.
Notons, cependant, que cette représentation est
possible en faisant appel aux divers codes existants. Plus
précisément, nous combinerons la touche Alt du clavier d'un
ordinateur avec le code décimal d'un caractère pour afficher ce
caractère à l'écran. Ainsi, par exemple, la combinaison de
la touche Alt avec le code 65 affiche @ à l'écran tandis que Alt
combiné ave 65 affiche A.
0.5. Méthodes et techniques
a. Méthodes
La méthode d'analyse, selon PINTO, R. et GRAWITZ, M.
[1971], est un ensemble d'opérations intellectuelles par lesquelles une
discipline donnée cherche à atteindre des vérités
qu'elle poursuit, les démontre et les vérifie.
En rapport avec notre investigation, nous avons
exploité plusieurs méthodes :
La méthode explicative : elle consiste à
expliquer le phénomène étudié dans son ensemble.
Cette méthode permet de montrer pourquoi la réalité est
telle qu'elle est observée. L'explication est donc un jugement
scientifique qui vise à établir des liens entre les faits et
à en spécifier la nature.
La méthode descriptive: elle consiste à
décrire le phénomène étudié dans son
ensemble et dans des aspects particuliers. Cette méthode cherche
à démontrer un phénomène par le biais des
descriptions, de classifications ou des typologies. Elle fait davantage appel
au jugement, à la finesse de l'observation ou à la
compréhension des phénomènes.
~ 12 ~
La méthode inductive : elle privilégie la
description des faits pour atteindre l'explication par une démarche
inductive. Cette dernière est une opération mentale qui conclut
du particulier au général, c'est-à-dire de quelques cas
à tous les cas ou encore des faits à la loi.
b. Techniques
GOODE, J. [1952] définit les techniques comme
étant des outils utilisés dans la collecte des informations
chiffrées ou non qui devront plus tard être soumises à
l'interprétation et à l'explication grâce aux
méthodes.
En ce qui nous concerne, nous avons exploité les
techniques documentaires. Celles-ci englobent les techniques suivantes : les
documents écrits, les documents technologiques, les documents visuels,
les documents phonétiques et audio-visuels. Grâce à ces
techniques, nous avons rassemblé les données extraites des
ouvrages, des livres, des articles en rapport avec le codage et la transmission
des données.
0.6. Délimitation du sujet
Le caractère multiforme de l'information (sonore,
graphique, vidéo) nous pousse à délimiter notre recherche
à l'information présentée sous forme des données
textuelles.
0.7. Difficultés rencontrées
Dans l'analyse et l'interprétation de données
relatives à notre sujet, nous étions butés à
quelques difficultés d'ordre pratique. Le sujet étudié
faisant appel à beaucoup de notions d'électroniques, nous nous
sommes vu limiter dans le développement du chapitre concernant la
transmission des données. Sans nul doute, le mécanisme interne
à la transmission proprement dite ne peut s'expliquer facilement que via
de nombreuses notions électroniques dont la maîtrise nous
échappe à ce niveau de notre formation universitaire.
Peut-être, ce serait mieux de penser à collaborer avec des
spécialistes en électroniques pour finalement développer
une explication simple de ce phénomène qu'est la transmission des
images, des sons via un réseau.
~ 13 ~
0.8. Plan du travail
Notre investigation sur le codage et la transmission des
données dans un réseau est subdivisée en quatre
chapitres.
Une introduction générale présente le
sujet traité.
Le premier chapitre décrit les
généralités sur les systèmes de codage.
Le deuxième chapitre aborde le codage de l'information.
Il présente le code ASCII comme base du codage des données. Il
établit la correspondance entre le caractère et le code en
décimal en vue de l'utilisation de ce code dans l'écriture du
caractère via la combinaison de la touche Alt+code décimal dans
le cas du clavier d'un ordinateur.
Le troisième chapitre concerne la transmission des
données. Il aborde essentiellement le réseau de transmission des
données, le support de cette transmission et le type de transmission de
données. Les protocoles établis dans la communication sont
expliqués, car ils constituent la clé de la communication dans le
réseau.
Le quatrième chapitre présente dans un langage
de programmation un exemple de transmission des données dans un
réseau. Il simule le cas de l'envoi, dans un réseau, de la phrase
suivante : « J'ai lu le livre. Magnifique ! ». Cette simulation
montre à merveille l'application du codage de chaque caractère et
le transfert de la phrase d'un émetteur à un récepteur via
un support ou un canal de communication.
Une conclusion, à la fin du travail, fait la
synthèse de l'analyse et de l'interprétation des résultats
avant de proposer les perspectives de recherche à venir en rapport avec
le sujet abordé.
~ 14 ~
CHAP. I. : GÉNÉRALITÉS SUR LES
SYSTÈMES DE CODAGE
I.0. Introduction
Le codage est une opération établissant une
bijection entre une information et une suite de « 0 » et de « 1
» qui sont représentables en machine. Autrement dit, l'information
est nécessairement codée avant d'être transmise dans un
réseau. Ce chapitre veut poser les bases du codage de l'information et
expliquer la manière dont une donnée peut être
codée. Il rappelle les notions de l'algèbre de Boole avant
d'aborder le système binaire comme base du codage et présenter le
codage des caractères suivant le code ASCII.
I.1. RAPPEL DE NOTIONS DE L'ALGÈBRE DE BOOLE
Dans l'algèbre de Boole, les états
logiques sont représentés par 0 et 1.
I.1.1. Les opérateurs logiques
Les opérateurs logiques ET(AND), OU(OR) et NON(NOT)
sont respectivement symbolisés par . (un point),
+ (un plus) et une barre au dessus.
I.1.2. Axiomes
Une algèbre de Boole vérifie les
propriétés présentées dans le tableau ci-dessous
avec a, b et c des propositions :
Opération
|
Loi
|
Addition
|
Multiplication
|
Commutativité
|
a + b = b + a
|
a.b = b.a
|
Associativité
|
(a + b) + c = a + (b
+ c)
|
(ab)c = a(bc)
|
Distributivité
|
a(b + c) = ab + ac
|
a(b + c) = ab + ac
|
Eléments neutres
|
a + 0 = a
|
a. 1= a
|
complémentarité
|
a + 1=1
|
a.a = 0
|
~ 15 ~
I.1.3. Théorèmes
Une algèbre de Boole vérifie les
théorèmes suivants :
Propriété
|
Loi
|
Addition
|
Multiplication
|
Idempotence
|
a + a = a
|
a.a = a
|
Absorption
|
a+ab=a
|
a(a+b)=a
|
De Morgan
|
a + b = a.b
|
a.b = a + b
|
Elément neutre
|
a + 1=1
|
a.0 = 0
|
I.1.4. Tables de vérité
Une table de vérité est un tableau permettant de
décrire toutes les possibilités de sorties en fonction des
entrées. On place donc les variables d'entrée dans les colonnes
de gauche en les faisant varier de telle façon à couvrir
l'ensemble des possibilités. La colonne (ou les colonnes si la fonction
a plusieurs sorties) de droite décrit la sortie.
~ 16 ~
Voici par exemple les tables des portes logiques : Soient A, B et
S des propositions.
Fonction logique
|
Entrée
|
Sortie
|
A
|
B
|
S
|
AND
S = A.B
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
OR
S = A + B
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
NAND S = A.B
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
NOR
|
0
|
0
|
1
|
0
|
1
|
0
|
S = A +B
|
1
|
0
|
0
|
1
|
1
|
0
|
XOR
S = A ?B
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
XNOR
|
0
|
0
|
1
|
0
|
1
|
0
|
S = A ?B
|
1
|
0
|
0
|
1
|
1
|
1
|
INV
S = IN
|
0
|
1
|
1
|
0
|
~ 17 ~
I.2. LE BINAIRE
De prime abord, il est important de signaler l'existence de
plusieurs systèmes de codage et de numération et de
préciser les raisons qui ont motivé le choix du système
binaire dans notre travail.
I.2.1. Les systèmes de codage
Il existe plusieurs systèmes de codage.
A. Les systèmes binaires
En binaire, nous distinguons trois principaux système de
codage : le
binaire pur, le binaire réfléchi (code GRAY) et le
binaire DCB ou BCD.
A.1. Le code binaire naturel
Dans le codage binaire naturel, nous utilisons le poids binaire
de chaque
chiffre en fonction de son rang. L'exemple donné
ci-dessous va aider à bien
cerner la signification du poids binaire et du rang de chaque
chiffre utilisé.
Le chiffre 9, par exemple, est codé en binaire naturel
comme suit :
(9)10 = (1001)2 sachant que 9 =
1.23 + 0.22 +
0.21 + 1.20
Dans cet exemple, les poids binaires représentés
en gras sont les coefficients que nous avons placés devant les
puissances de 2 tandis que le rang est donné par l'ordre de la puissance
de 2. Généralement, dans l'écriture bn, b
représente la base de calcul et n renvoie au rang.
Le codage binaire naturel est utilisé dans les adresses
IP (Internet Protocol) version 4 [notées IPv4,
représentées avec 32 bits regroupés en 4 octets] pour
identifier le réseau auquel appartient un ordinateur. Comme
illustration, cherchons à déterminer le réseau auquel
appartient un ordinateur dont l'adresse IP est donnée par 192.168.12.25
sachant que son masque de sous-réseau par défaut est
255.255.255.0 ; Signalons en passant qu'un masque de sous-réseau permet
d'obtenir l'adresse d'une machine au sein du sous-réseau auquel elle
appartient. C'est un ensemble de bits combinés par un et
logique à l'adresse IP étudiée.
~ 18 ~
Algorithme :
convertir l'adresse IP de l'hôte en binaire ; chaque
partie de l'adresse étant
un octet.
stocker le résultat dans une variable a ;
Convertir le masque de sous-réseau en binaire ; chaque
partie du masque
de sous-réseau étant un octet.
stocker le résultat dans une variable b ;
faire la combinaison logique a et b ;
soit c la variable combinaison logique de a et b, c = a et b
;
Finalement, le réseau auquel appartient l'hôte
est donné par la variable c.
la représentation décimale de la valeur de la
variable c, regroupée en 4
octets, donne l'identifiant du réseau auquel appartient
l'hôte.
En appliquant cet algorithme de conversion, nous avons :
La conversion de l'adresse IP en binaire est donnée
par
192.168.12.25 = 11000000.10101000.00001100.00011001 ;
Soit a = 11000000.10101000.00001100.00011001 ;
La conversion en binaire du masque du sous-réseau par
défaut est donnée par :
255.255.255.0 = 11111111.11111111.11111111.00000000 ;
Soit b = 11111111.11111111.11111111.00000000 ;
Alors c = a et b ;
Le tableau ci-dessous récapitule les opérations
et le résultat :
a
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
0
|
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
b
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
c
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
0
|
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
|
192
|
|
168
|
|
12
|
|
0
|
|
L'identifiant du réseau est donné par
192.168.12.0
|
~ 19 ~
A.2. Code binaire réfléchi
|
c
|
a
|
b
|
Premier terme
|
0
|
0
|
0
|
Deuxième terme
|
0
|
0
|
1
|
Troisième terme
|
0
|
1
|
1
|
Quatrième terme
|
0
|
1
|
0
|
Cinquième terme
|
1
|
1
|
0
|
Sixième terme
|
1
|
1
|
1
|
Septième terme
|
1
|
0
|
1
|
Huitième terme
|
1
|
0
|
0
|
|
Tableau du code binaire réfléchi
Dans ce tableau du code binaire réfléchi, un
seul bit change d'état lorsque l'on passe d'un terme au suivant. Le code
peut se refermer sur lui-même sans perdre ses propriétés
dans la mesure où le dernier terme se situe juste avant un axe de
symétrie.
Le codage binaire réfléchi permet
d'éviter les états indéterminés lors du passage
d'un terme à un autre terme adjacent.
A.3. Code binaire DCB (Décimal Codé en
Binaire)
Dans le code binaire DCB, chaque chiffre décimal est
converti en binaire, indépendamment des autres chiffres. Ce code est
utilisé dans les systèmes traitant des nombres décimaux
uniquement. Citons par exemple, le comptage dans les instruments de mesure. Si
vous achetez un voltmètre numérique, la valeur mesurée est
transmise à l'afficheur en numérique. Mais elle est auparavant
transformée en décimal ; et chaque chiffre décimal est
transmis à un afficheur en binaire naturel (sur 4 bits) des chiffres
décimaux.
Son inconvénient est qu'il nécessite plus de
bits que le binaire naturel pour coder le même nombre décimal.
Par exemple (583)10 se notera (0101 1000 0011)dcb
en code binaire DCB.
~ 20 ~
B. Le système hexadécimal
Le codage hexadécimal est très utilisé
dans les systèmes à microprocesseur, car il simplifie
l'écriture des nombres binaires. Ce codage utilise 16 symboles [0...9 et
A...F].
Chaque chiffre hexadécimal est défini par quatre
bits. Notons que le quartet (4bits) entraîne 16 combinaisons tandis que
l'octet (8 bits) entraîne 256 combinaisons.
Contrairement à ce que beaucoup de gens croient, aucune
machine ne compte en hexadécimal. Elles travaillent toutes en binaire,
et ne se servent de l'hexadécimal que pour dialoguer avec l'être
humain. Celui-ci se trompe trop souvent dans de longues listes de 0 et 1.
I.2.2. Les systèmes de numération
Les systèmes de numération sont importants parce
qu'ils permettent de préciser le domaine de définition dans
lequel on travaille et de convertir une base donnée en une base dont le
calcul est aisé à réaliser.
A. Addition binaire
Le tableau ci-dessous présente le bit somme et le bit
de retenue dans l'addition binaire.
Dans le tableau ci-haut, 0(1) représente la retenue 1
à reporter. En considérant une addition binaire comme la somme
à effectuer sur deux mémoires à un bit, nous observons
dans l'addition binaire les différentes configurations des bits
concernés (notés a et b).
~ 21 ~
Nous aurons comme résultat un bit de somme et un bit de
retenue.
Bit a
|
|
Bit b
|
|
Bit somme
|
Bit de retenue
|
1
|
+
|
1
|
=
|
0
|
1
|
1
|
+
|
0
|
=
|
1
|
0
|
0
|
+
|
1
|
=
|
1
|
0
|
0
|
+
|
0
|
=
|
0
|
0
|
Si l'on compare avec les tables d'opérateurs
booléens rencontrées précédemment, on
s'aperçoit que l'opérateur ? (Xor) fournit en sortie les
mêmes configurations que le bit somme, et que l'opérateur
. (ET) délivre en sortie les mêmes configurations que le
bit de retenue.
B. Conversion d'une base quelconque en base
décimale
Pour convertir un nombre en base b avec b>1 en sa
représentation décimale et réciproquement, il convient de
respecter les méthodes générales suivantes :
Soit (xnxn-1...x0) b un nombre
écrit en base b. Pour le convertir en décimal (base 10), il faut
:
Convertir chaque symbole xk en son équivalent
ak en base 10. On obtient ainsi la suite de chiffres : an
a .
,...,
0
Réécrire le nombre comme une somme :
n n
k k
(xnxn-1...x0)b Î ? ? ?
x b a b
k k
k = 0 k = 0
Effectuer tous les calculs en base 10 (somme, produit,
puissance).
Comme illustration, nous nous proposons de convertir
(2AB8)13 en base 10.
Dans notre exemple, b = 13. Nous aurons donc l'expression
suivante :
(2AB8)13 = 2.133 + 10.132
+ 11.131 + 8.130 [avec A=10 et B =11]
= 4394 + 1690 + 143 + 8
= (6235)10
Le nombre (2AB8)13 donne (6235)10
en base 10.
Soit « a » un nombre écrit en décimal.
Représenter le nombre a en base b :
La méthode utilisée est un algorithme fondé
sur la division euclidienne.
~ 22 ~
Si a < b, il n'a pas besoin d'être converti.
Si a = b, on peut diviser a par b et l'on divise successivement
les différents quotients qk obtenues par la base b.
De manière générale, on aura :
k k - 1
a = b r b r
. + . + .... + . + ( Où ri est le reste de la
division de a par b).
b r r
k k - 1 1 0
En remplaçant chaque ri par son symbole
équivalent p i en base b, nous
obtenons :
|
a p p - p p
= ( ... ) b. Cet algorithme permet d'obtenir
une
k k 1 1 0
|
représentation de a dans la base b.
On a par exemple que (89)10 = (1011001)2. En effet, pour
transformer (89)10 en binaire, on peut utiliser la méthode des divisions
successives par 2 : on divise successivement par 2 jusqu'à un
résultat de 0, les restes successifs (de bas en haut) forment le nombre
binaire.
89 : 2 = 44 reste 1
44 : 2 = 22 reste 0
22 : 2 = 11 reste 0
11 : 2 = 5 reste 1
5 : 2 = 2 reste 1
2 : 2 = 1 reste 0
1 : 2 = 0 reste 1
D'où (89)10 = (1011001)2
A l'inverse, (1011001)2 représente (89)10. En effet, on
aura :
1x26 + 0x25 + 1x24 + 1x23
+ 0x22 + 0x21 + 1x20
= 1x64 + 0x32 + 1x16 + 1x8 + 0x4 + 0x2 + 1x1
= 64 + 16 + 8 + 1
= (89)10.
Les informaticiens, pour des raisons de commodité
(manipulations minimales de symboles), préfèrent utiliser
l'hexadécimal plutôt que le binaire. L'humain, contrairement
à la machine, a quelques difficultés à fonctionner sur des
suites importantes de 1 et de 0. Ainsi l'hexadécimal (sa base b =24
étant une puissance de 2) permet de diviser, en moyenne le nombre
de symboles par un peu moins de 4, par rapport au même nombre
écrit en binaire. C'est l'unique raison pratique qui justifie son
utilisation.
~ 23 ~
C. Conversion binaire en hexadécimal
Nous allons détailler l'action de conversion en 6
étapes pratiques :
1ère étape : Soit a un nombre écrit en
base 2 ;
2ème étape : décomposer le nombre a par
tranche de 4 bits à partir du bit de
poids faible ;
3ème étape : compléter la dernière
tranche (celle des bits de poids forts) par
des 0 s'il y a lieu ;
4ème étape : convertir chaque tranche en son
symbole de la base 16 ;
5ème étape : réécrire à sa
place le nouveau symbole par changements
successifs de chaque groupe de 4 bits ;
6ème étape : Enfin, le nombre écrit en
hexadécimal est obtenu.
Voici un exemple. Soit à transformer (001110100101)2 en
hexadécimal.
En effet, (001110100101)2 s'écrit 0011 1010 0101. Ce
qui correspond à (3A5)16
avec 3 = 0011 ; A = 1010 = 10 et 5 = 0101.
D. Conversion hexadécimal en binaire
Cette conversion est l'opération inverse de la
précédente. Elle s'effectue
en 4 étapes :
1ère étape : Soit a un nombre écrit en
base 16 ;
2ème étape : convertir chaque symbole
hexadécimal du nombre en son écriture
binaire (nécessitant au plus 4 bits) ;
3ème étape : Pour chaque tranche de 4 bits,
compléter les bits de poids fort par
des 0 s'il y a lieu ;
4ème étape : le nombre « a »
écrit en binaire est obtenu en regroupant toutes les
tranches de 4 bits à partir du bit de poids faible,
sous forme d'un seul nombre
binaire.
Voici un exemple. Soit à transformer (3A5)16 en
binaire.
En effet, 3 = 0011 ; A = 1010 = 10 et 5 = 0101.
Donc (3A5)16 = (001110100101)2.
~ 24 ~
CHAP. II. LE CODAGE DE L'INFORMATION
II.0. Introduction
Dans une machine, toutes les informations sont codées
sous forme d'une suite de « 0 » et de « 1 » (langage
binaire). Mais l'être humain ne parle généralement pas
couramment le langage binaire. Il doit donc tout « traduire » pour
que la machine puisse exécuter les instructions relatives aux
informations qu'on peut lui donner.
Le codage étant une opération purement humaine,
il faut produire des algorithmes qui permettront à la machine de
traduire les informations que nous voulons lui voir traiter. Le codage est une
opération établissant une bijection entre une information et une
suite de « 0 » et de « 1 » qui sont représentables
en machine.
II.1. LE CODAGE DES NOMBRES ENTIERS
II.1.1. Le codage des entiers en général
Les nombres entiers peuvent être codés comme des
caractères ordinaires. Toutefois les codages adoptés pour les
données autres que numériques sont trop lourds à manipuler
dans un ordinateur. Du fait de sa constitution, un ordinateur est plus «
habile » à manipuler des nombres écrits en numération
binaire (qui est un codage particulier).
Nous allons décrire trois modes de codage des entiers
les plus connus, à savoir le système décimal, le
système binaire et le système hexadécimal. Signalons,
à ce sujet, qu'en informatique, les systèmes les plus
utilisés sont le système hexadécimal et le système
binaire. Il est possible de représenter tous les nombres dans un
système à base b (b entier, b>1)
Soit (x n x n - 1 x b un nombre x écrit
en base b avec n+1 symboles. ... 0 )
« xk » est le symbole associé à
la puissance « k
b , « xk » E { 0,1,..., b
-1}
Lorsque b = 2 (numération binaire), chaque symbole du
nombre x E { 0, 1}, soit « xk » E { 0, 1} . Autrement dit
les nombres binaires sont donc écrits avec des 0 et des 1, qui sont
représentés physiquement par des bits dans la machine.
Le bit de rang 0 est appelé le bit de poids faible.
~ 25 ~
Le bit de rang n est appelé le bit de poids fort.
Une mémoire à n+1 bits (n>0) permet de
représenter sous forme binaire (en
binaire pur) tous les entiers naturels de l'intervalle
2n + 1 1
? - ?
? ? .
Soit pour n+1 = 8 bits, tous les entiers de l'intervalle [0, 255]
Soit pour n+1 =16 bits, tous les entiers de l'intervalle [0, 65535]
II.1.2. Codage des nombres entiers : binaire
signé
Ce codage permet la représentation des nombres entiers
relatifs. Dans la représentation en binaire signé, le bit de
poids fort (bit de rang n associé à 2n) sert à
représenter le signe (0 pour un entier positif et 1 pour un entier
négatif), les n autres bits représentent la valeur absolue du
nombre en binaire pur.
Une mémoire à n+1 bits (n>0) permet de
représenter sous forme binaire (en binaire signé) tous les
entiers naturels de l'intervalle [-(2n - 1), 2n - 1)].
Soit pour n+1 = 8 bits, tous les entiers de l'intervalle [-127, 127]
Soit pour n+1 = 16 bits, tous les entiers de l'intervalle
[-32767, 32767]
Le nombre Zéro est représenté dans cette
convention (dites du zéro positif) par :
0000...00000
Il est à noter qu'il reste malgré tout une
configuration mémoire inutilisée : 1000...00000.
Cet état binaire ne représente a priori aucun nombre entier ni
positif ni négatif de l'intervalle [-(2n-1),
2n-1)]. Afin de ne pas perdre inutilement la configuration «
1000...00000 », les informaticiens ont
décidé que cette configuration représente malgré
tout un nombre négatif parce que le bit de signe 1, et en même
temps la puissance du bit contenant le « 1 », donc par convention
-2n.
L'intervalle de représentation se trouve alors
augmenté d'un nombre, il devient :
[-2n, 2n -1)].
Soit pour n+1= 8 bits, tous les entiers de l'intervalle [-128,
127]
Soit pour n+1 = 16 bits, tous les entiers de l'intervalle
[-32768, 32767]
Ce codage n'est pas utilisé tel quel, il est
donné ici à titre pédagogique. En effet, le traitement
spécifique du signe coûte cher en circuits électroniques
~ 26 ~
et en temps de calcul. C'est une version améliorée
qui est utilisée dans la plupart des calculateurs : elle se nomme le
complément à deux.
II.1.3. Un autre codage des nombres entiers :
complément à deux
Ce codage, purement conventionnel et très utilisé
de nos jours, est dérivé du binaire signé. Il sert
à représenter en mémoire les entiers relatifs.
Dans le binaire signé, la mémoire est
divisée en deux parties inégales. Le bit de poids fort
représente le signe et le reste représente la valeur absolue avec
le codage suivant :
Supposons que la mémoire soit à n+1 bits et que x
soit un entier relatif à représenter :
Si x < 0, alors 3 étapes sont à suivre :
1ère étape : coder la valeur absolue du nombre x,
x en binaire signé.
2ème étape : complémenter tous les bits de
la mémoire (complément restreint). Cette opération est un
non logique effectué sur chaque bit de la mémoire. 3ème
étape : additionner +1 au nombre binaire de la mémoire (addition
binaire).
Un des intérêts majeurs de ce codage est
d'intégrer la soustraction dans l'opération de codage et de ne
faire effectuer que des opérations simples et rapides (non logique,
addition de 1).
II.2. LE CODAGE DES CARACTÈRES : LE CODE
ASCII
Dans la vie de tous les jours, pour l'écriture de
documents alphanumériques, nous faisons appel à :
Un alphabet de lettres minuscules ={
a,b,c,....,z}, soient 26 caractères
;
Un alphabet de lettres majuscules = { A, B,
C,...., Z}, soient 26 caractères ; Des chiffres{
0,1,2,3,4,5,6,7,8,9}, soient 10 caractères ;
Des symboles syntaxiques { ?, ;(« .... au minimum 10
caractères ;
Soit un total minimal de 72 caractères.
Si l'on avait choisi un code à 6 bits le nombre de
caractères codables aurait été de 26 = 64 (tous
les nombres binaires compris entre 000000 et 111111), nombre donc insuffisant
pour nos besoins.
~ 27 ~
Il faut au minimum 1 bit de plus, ce qui permet ainsi
27 = 128 nombres binaires différents, autorisant alors le
codage de 128 caractères.
II.2.1. Le code ASCII original (128 caractères)
Initialement le code ASCII est un code à 7 bits
(27=128 caractères). Les tableaux qui vont suivre
dégagent l'analogie entre le décimal, l'octal,
l'hexadécimal, le binaire et la signification de chaque code de
caractères du code ASCII original.
Décimal
|
Octal
|
Hexadécimal
|
Binaire
|
Signification (Alt +code décimal)
|
000
|
000
|
000
|
00000000
|
NUL (Null Char.)
|
001
|
001
|
001
|
00000001
|
SOH (Start of Header)
|
002
|
002
|
002
|
00000010
|
STX (Start of Text)
|
003
|
003
|
003
|
00000011
|
ETX
|
004
|
004
|
004
|
00000100
|
EOT(End of Transmission)
|
005
|
005
|
005
|
00000101
|
ENQ (Enquiry)
|
006
|
006
|
006
|
00000110
|
ACK (Acknowledgement)
|
007
|
007
|
007
|
00000111
|
BEL (Bell)
|
008
|
010
|
008
|
00001000
|
BS (Backspace)
|
009
|
011
|
009
|
00001001
|
HT (horizontal Tab)
|
010
|
012
|
00A
|
00001010
|
LF (Line Feed)
|
011
|
013
|
00B
|
00001011
|
VT (Vertical Tab)
|
012
|
014
|
00C
|
00001100
|
FF (Form Feed)
|
013
|
015
|
00D
|
00001101
|
CR (Carriage Return)
|
014
|
016
|
00E
|
00001110
|
SO (Shift Out)
|
015
|
017
|
00F
|
00001111
|
SI (Shift In)
|
016
|
020
|
010
|
00010000
|
DLE (Data Link Escape)
|
017
|
021
|
011
|
00010001
|
DC1 (Device Control 1)
|
018
|
022
|
012
|
00010010
|
D (Device Control 2)
|
019
|
023
|
013
|
00010011
|
DC3(Device Control 3)
|
020
|
024
|
014
|
00010100
|
DC4 (Device Control 4)
|
~ 28 ~
Décimal
|
Octal
|
Hexadécimal
|
Binaire
|
Signification (Alt +code décimal)
|
021
|
025
|
015
|
00010101
|
NAK (Negative Acknow.)
|
022
|
026
|
016
|
00010110
|
SYN (Synchronous Idle)
|
023
|
027
|
017
|
00010111
|
ETB (End of Trans. Block)
|
024
|
030
|
018
|
00011000
|
CAN (Cancel)
|
025
|
031
|
019
|
00011001
|
EM (End of Medium)
|
026
|
032
|
01A
|
00011010
|
SUB (Substitute)
|
027
|
033
|
01B
|
00011100
|
ESC (Escape)
|
028
|
034
|
01C
|
00011101
|
FS (File Separator)
|
029
|
035
|
01D
|
00011110
|
GS (Group Separator)
|
030
|
036
|
01E
|
00011111
|
RS (Request to Send)
|
031
|
037
|
01F
|
00011111
|
US (Unit Separator)
|
032
|
040
|
020
|
00100000
|
SP (Space)
|
033
|
041
|
021
|
00100001
|
!
|
034
|
042
|
022
|
00100010
|
«
|
035
|
043
|
023
|
00100011
|
#
|
036
|
044
|
024
|
00100100
|
$
|
037
|
045
|
025
|
00100101
|
%
|
038
|
046
|
026
|
00100110
|
&
|
039
|
047
|
027
|
00100111
|
`
|
040
|
050
|
028
|
00101000
|
(
|
041
|
051
|
029
|
00101001
|
)
|
042
|
052
|
02A
|
00101010
|
*
|
043
|
053
|
02B
|
00101011
|
+
|
044
|
054
|
02C
|
00101100
|
,
|
045
|
055
|
02D
|
00101101
|
-
|
046
|
056
|
02E
|
00101110
|
.
|
047
|
057
|
02F
|
00101111
|
/
|
048
|
060
|
030
|
00110000
|
0
|
049
|
061
|
031
|
00110001
|
1
|
050
|
062
|
032
|
00110010
|
2
|
051
|
063
|
033
|
00110011
|
3
|
~ 29 ~
Décimal
|
Octal
|
Hexadécimal
|
Binaire
|
Signification (Alt +code décimal)
|
052
|
064
|
034
|
00110100
|
4
|
053
|
065
|
035
|
00110101
|
5
|
054
|
066
|
036
|
00110110
|
6
|
055
|
067
|
037
|
00110111
|
7
|
056
|
070
|
038
|
00111000
|
8
|
057
|
071
|
039
|
00111001
|
9
|
058
|
072
|
03A
|
00111010
|
:
|
059
|
073
|
03B
|
00111011
|
;
|
060
|
074
|
03C
|
00111100
|
<
|
061
|
075
|
03D
|
00111101
|
=
|
062
|
076
|
03E
|
00111110
|
>
|
063
|
077
|
03F
|
00111111
|
?
|
064
|
100
|
040
|
01000000
|
@
|
065
|
101
|
041
|
01000001
|
A
|
066
|
102
|
042
|
01000010
|
B
|
067
|
103
|
043
|
01000011
|
C
|
068
|
104
|
044
|
01000100
|
D
|
069
|
0105
|
045
|
01000101
|
E
|
070
|
106
|
046
|
01000110
|
F
|
071
|
107
|
047
|
01000111
|
G
|
072
|
110
|
048
|
01001000
|
H
|
073
|
111
|
049
|
01001001
|
I
|
074
|
112
|
04A
|
01001010
|
J
|
075
|
113
|
04B
|
01001011
|
K
|
076
|
114
|
04C
|
01001100
|
L
|
077
|
115
|
04D
|
01001101
|
M
|
078
|
116
|
04E
|
01001110
|
N
|
079
|
117
|
04F
|
01001111
|
O
|
080
|
120
|
050
|
01010000
|
P
|
081
|
121
|
051
|
01010001
|
Q
|
082
|
122
|
052
|
01010010
|
R
|
~ 30 ~
Décimal
|
Octal
|
Hexadécimal
|
Binaire
|
Signification (Alt +code décimal)
|
083
|
123
|
053
|
01010011
|
S
|
084
|
124
|
054
|
01010100
|
T
|
085
|
125
|
055
|
01010101
|
U
|
086
|
126
|
056
|
01010110
|
V
|
087
|
127
|
057
|
01010111
|
W
|
088
|
130
|
058
|
01011000
|
X
|
089
|
131
|
059
|
01011001
|
Y
|
090
|
132
|
05A
|
01010101
0
|
Z
|
091
|
133
|
05B
|
01011011
|
[
|
092
|
134
|
05C
|
01011100
|
\
|
093
|
135
|
05D
|
01011101
|
]
|
094
|
136
|
05E
|
01011110
|
^
|
095
|
137
|
05F
|
01011111
|
_
|
096
|
140
|
060
|
01100000
|
`
|
097
|
141
|
061
|
01100001
|
a
|
098
|
142
|
062
|
01100010
|
b
|
099
|
143
|
063
|
01100011
|
c
|
100
|
144
|
064
|
01100100
|
d
|
101
|
145
|
065
|
01100101
|
e
|
102
|
146
|
066
|
01100110
|
f
|
103
|
147
|
067
|
01100111
|
g
|
104
|
150
|
068
|
01101000
|
h
|
105
|
151
|
069
|
01101001
|
i
|
106
|
152
|
06A
|
01101010
|
j
|
107
|
153
|
06B
|
01101011
|
k
|
108
|
154
|
06C
|
01101100
|
l
|
109
|
155
|
06D
|
01101101
|
m
|
110
|
156
|
06E
|
01101110
|
n
|
111
|
157
|
06F
|
01101111
|
o
|
112
|
160
|
070
|
01110000
|
p
|
~ 31 ~
Décimal
|
Octal
|
Hexadécimal
|
Binaire
|
Signification (Alt +code décimal)
|
113
|
161
|
071
|
01110001
|
q
|
114
|
162
|
072
|
01110010
|
r
|
115
|
163
|
073
|
01110011
|
s
|
116
|
164
|
074
|
01110100
|
t
|
117
|
165
|
075
|
01110101
|
u
|
118
|
166
|
076
|
01110110
|
v
|
119
|
167
|
077
|
01110111
|
w
|
120
|
170
|
078
|
01111000
|
x
|
121
|
171
|
079
|
01111001
|
y
|
122
|
172
|
07A
|
01111010
|
z
|
123
|
173
|
07B
|
01111011
|
{
|
124
|
174
|
07C
|
01111100
|
|
|
125
|
175
|
07D
|
01111101
|
}
|
126
|
176
|
07E
|
01111110
|
~
|
127
|
177
|
07F
|
01111111
|
DEL
|
Notons que, dans ce tableau, les caractères de code
inférieur à 32 (code du caractère « espace »)
ont des rôles particuliers (retour à la marge, passage à la
ligne, ...). Aussi remarquons-nous que les caractères majuscules ont un
code plus petit que le code des caractères minuscules. Certains
logiciels se basent sur cette convention pour comparer des chaînes de
caractères dans l'ordre
alphabétique. Ainsi, par exemple, la comparaison «
anatole » = « Anatole »
pourrait avoir la valeur FAUX dans
certains logiciels ; la réponse dépend du mode de comparaison
entre les caractères : codage ASCII strict ou non. D'où l'on
comprend bien qu'un ordinateur est donc capable de comparer des chaînes
de caractères. Il n'a cependant jamais accès au sens des
informations : il ne traite que la forme. Il se base généralement
sur l'ordre alphabétique.
En fonction du logiciel utilisé, il se peut que la
convention d'ordre alphabétique diffère.
Généralement, les caractères majuscules et minuscules ne
sont pas considérés comme équivalents.
~ 32 ~
II.2.2. Le code ASCII étendu (256
caractères)
Le code ASCII original a été étendu
à un code sur 8 bits (28 = 256 caractères) permettant
le codage des caractères nationaux (en France les caractères
accentués comme : ù, à, è, é, â,...
etc.) et les caractères semi-graphiques.
En réalité, les caractères ne sont pas
représentés en tant que tels dans l'ordinateur. Celui-ci n'est
capable que de mémoriser des nombres. Chaque caractère s'est donc
vu, par convention, attribuer un code numérique.
Les codes supérieurs à 127 ne sont pas
attribués dans le code ASCII original. En fonction de la langue
utilisée, les caractères spéciaux peuvent recevoir un code
entre 128 et 255. On parle ainsi du code ASCII étendu. Ce code ASCII
étendu est utilisé dans les pages HTML, diffusées sur le
réseau Internet.
Le tableau ci-dessous présente les caractères
spéciaux du code ASCII étendu.
Décimal
|
Signification (Alt + Code décimal)
|
127
|
|
128
|
Ç
|
129
|
ü
|
130
|
é
|
131
|
â
|
132
|
ä
|
133
|
à
|
134
|
å
|
135
|
ç
|
136
|
ê
|
137
|
ë
|
138
|
è
|
139
|
ï
|
140
|
î
|
141
|
ì
|
142
|
Ä
|
143
|
Å
|
~ 33 ~
Décimal
|
Signification (Alt + Code décimal)
|
144
|
É
|
145
|
æ
|
146
|
JE
|
147
|
ô
|
148
|
ö
|
149
|
ò
|
150
|
û
|
151
|
ù
|
152
|
ÿ
|
153
|
Ö
|
154
|
Ü
|
155
|
ø
|
156
|
£
|
157
|
Ø
|
158
|
X
|
159
|
f
|
160
|
á
|
161
|
í
|
162
|
ó
|
163
|
ú
|
164
|
ft
|
165
|
Ñ
|
166
|
|
167
|
°
|
168
|
|
169
|
®
|
170
|
#172;
|
171
|
1/2
|
172
|
1/4
|
173
|
|
174
|
«
|
~ 34 ~
Décimal
|
Signification (Alt + Code décimal)
|
175
|
»
|
176
|
|
177
|
|
178
|
|
179
|
I
|
180
|
|
181
|
Á
|
182
|
Â
|
183
|
À
|
184
|
(c)
|
185
|
II
|
186
|
II
|
187
|
TI
|
188
|
J
|
189
|
cents
|
190
|
Y
|
191
|
1
|
192
|
L
|
193
|
1
|
194
|
T
|
195
|
F
|
196
|
--
|
197
|
+
|
198
|
ã
|
199
|
|
200
|
IL-
|
201
201
|
IT
|
202
|
JL
|
203
|
ir
|
204
|
IIF
|
205
|
=
|
~ 35 ~
Décimal
|
Signification (Alt + Code décimal)
|
206
|
+
|
207
|
|
208
|
ô
|
209
|
Ð
|
210
|
Ê
|
211
|
Ë
|
212
|
È
|
213
|
õ
|
214
|
Í
|
215
|
Î
|
216
|
Ï
|
217
|
+
|
218
|
r
|
219
|
|
220
|
_
|
221
|
|
222
|
Ì
|
223
|
|
224
|
Ó
|
225
|
ß
|
226
|
Ô
|
227
|
Ò
|
228
|
õ
|
229
|
Õ
|
230
|
p
|
231
|
þ
|
232
|
Þ
|
233
|
Ú
|
234
|
Û
|
235
|
Ù
|
236
|
ý
|
~ 36 ~
Décimal
|
Signification (Alt + Code décimal)
|
237
|
|
238
|
|
239
|
'
|
240
|
-
|
241
|
#177;
|
242
|
=
|
243
|
3/4
|
244
|
|
245
|
§
|
246
|
Â
|
247
|
|
248
|
°
|
249
|
·
|
250
|
·
|
251
|
1
|
252
|
3
|
253
|
2
|
254
|
|
255
|
|
~ 37 ~
II.2.3. Autres codages
De nombreux autres codages existent adaptés à
diverses solutions de stockage de l'information. Ainsi, un codage récent
dit « universel » est en cours de diffusion : il s'agit du codage
Unicode sur 16 bits (216 = 65536 caractères). La limite fut
dans un premier temps fixée à 16 bits pour les premières
versions d'Unicode, et à 32 bits (232 = 4.294.967.296
caractères) pour les premières versions de la norme ISO/CEI
10646.
Il serait intéressant d'y réfléchir dans
un autre travail afin de montrer sa complexité et ses applications par
rapport au code ASCII original et au code ASCII étendu. Ce codage
Unicode permet d'afficher à l'écran les caractères
spéciaux tels que IR, ø, E, =,
=, ä, á, etc. , en maintenant la touche ALT
enfoncée et en tapant le nombre correspondant au caractère sur le
pavé numérique. Le tableau qui suit illustre cette approche de
saisie des caractères spéciaux.
Unicode hexadécimal
|
Unicode décimal
|
ALT+ Code décimal Symbole
|
03B1
|
945
|
á
|
03B4
|
948
|
ä
|
03C8
|
968
|
ø
|
211D
|
8477
|
I1
|
220A
|
8714
|
E
|
2264
|
8804
|
=
|
2265
|
8805
|
=
|
~ 38 ~
CHAP. III. LA TRANSMISSION
DES DONNÉES DANS UN RÉSEAU
III.0. Introduction
Après l'étape du codage, intervient celle de la
transmission. Il est question d'étudier la manière dont les
suites binaires des caractères sont envoyées vers l'utilisateur
final de ces informations.
Ce transport peut s'effectuer en série ou en
parallèle. Dans le premier cas, les bits sont envoyés les uns
derrière les autres. La succession de caractères peut se faire de
deux façons distinctes : le mode asynchrone ou le mode synchrone. Dans
le cas de transmission parallèle, les bits d'un même
caractère sont envoyés sur des fils distincts, pour arriver
ensemble à destination. Cette méthode pose des problèmes
de synchronisation qui conduisent à ne l'utiliser que sur de très
courtes distances (dans le cas du bus d'un ordinateur par exemple).
III.1. MODES DE TRANSMISSION DES DONNÉES
A. Mode asynchrone
Le mode asynchrone indique qu'il n'y a pas de relations
préétablies entre l'émetteur et le récepteur. Les
bits d'un même caractère sont encadrés de deux signaux,
l'un indiquant le début du caractère, l'autre la fin. Ce sont les
bits start et stop. Le début d'une transmission peut se placer à
un instant quelconque dans le temps.
bit start bits du caractère bit stop
Figure représentant un caractère dans le mode
asynchrone
~ 39 ~
B. Mode synchrone
Dans le mode synchrone, l'émetteur et le
récepteur se mettent d'accord sur un intervalle constant, qui se
répète sans arrêt dans le temps. Les bits d'un
caractère sont envoyés les uns derrière les autres et sont
synchronisés avec le début des intervalles de temps.
Dans ce type de transmissions, les caractères sont
émis en séquence, sans aucune séparation. Seul ce mode est
utilisé dans le cas de très forts débits. Dans tous les
cas, le signal émis est synchronisé sur une horloge lors de la
transmission d'un élément binaire. La vitesse de l'horloge donne
le débit de la ligne en bauds (en général, 1 baud = 1bps),
c'est-à-dire le nombre de tops d'horloge par seconde.
Nous savons par exemple qu'une ligne de communication qui
fonctionne à 50 bauds indique qu'il y a 50 intervalles de temps
élémentaires dans une seconde. Sur un intervalle
élémentaire, on émet en général un bit,
c'est-à-dire un signal à « 1 » ou « 0 ». Mais
rien n'empêche de transmettre quatre types de signaux distincts qui
auraient comme signification « 0 », « 1 », « 2 »
et « 3 ». On dit, dans ce dernier cas, que le signal a une valence de
deux. Un signal a une valence de n si le nombre de niveaux transportés
dans un intervalle de temps élémentaire est de 2n.
La capacité de transmission de la ligne en nombre de
bits transportés par seconde vaut n multiplié par la vitesse en
bauds. On exprime cette capacité en bits par seconde. Par exemple, une
ligne de vitesse de 50 bauds qui a une valence de 2 a une capacité de
100 bits par seconde (100 bit/s).
Lors de la transmission d'un signal, des perturbations de la
ligne physique par ce que l'on appelle le bruit extérieur peuvent se
produire. Si l'on connaît le niveau de ce bruit, on peut calculer la
capacité maximale de la ligne.
En termes plus précis, le bruit correspond à
l'ensemble des perturbations qui affectent la voie de transmission. Il provient
de la qualité de la ligne, qui modifie les signaux qui s'y propagent,
des éléments intermédiaires comme les modems et les
multiplexeurs, qui n'envoient pas toujours exactement les signaux
demandés, et d'événements extérieurs comme les
ondes électromagnétiques.
~ 40 ~
Le bruit est considéré comme un processus
aléatoire décrit par une fonction b(t). Si s(t) est le signal
transmis, le signal parvenant au récepteur s'écrit s(t)+b(t). Le
rapport signal sur bruit est une caractéristique d'un canal : c'est le
rapport de l'énergie du signal sur l'énergie du bruit. Ce rapport
varie dans le temps, puisque le bruit n'est pas uniforme. Toutefois, on
l'estime par une valeur moyenne sur un intervalle de temps. Il s'exprime en
décibel (dB).
Nous écrivons ce rapport S .
B
Théorème de Shannon
Le théorème de Shannon nous donne la
capacité maximale d'un canal soumis à
un bruit : C = W où
C représente la capacité maximale en bit/s ;
W est la bande passante en hertz (HZ).
Sur une ligne téléphonique dont la bande
passante est de 3200 Hz, pour un rapport signal sur bruit de 10dB, on peut
théoriquement atteindre une capacité de 10 Kbit/s.
III.2. LES SENS DE TRANSMISSION DES DONNÉES
ENTRE DEUX POINTS
La transmission des données entre deux points d'un
réseau se fait dans un canal de communication. Cette transmission peut
être de type simplex, c'est-à-dire, que la transmission suit une
liaison unidirectionnelle, toujours dans le même sens : de
l'émetteur vers le récepteur. Le deuxième type de
transmission est le Half Duplex, c'est-à-dire, que la transmission suit
une liaison bidirectionnelle et permet de transformer l'émetteur en
récepteur et vice versa. Une liaison bidirectionnelle,
simultanée, ou duplex (ou encore full-duplex), permet une transmission
simultanée dans les deux sens.
Schématiquement, les sens de transmission sont
représentés comme
suit :
Simplex : Emetteur simplex
???> Récepteur
Half-duplex : Emetteur ??>
Récepteur
1' Alternant -
Récepteur ??? Emetteur
~ 41 ~
Duplex : Emetteur ??????
Récepteur
Full - Duplex
Récepteur Full - ????? Duplex Emetteur
III.3. LES TECHNIQUES DE TRANSMISSION
Dans ce paragraphe, nous allons examiner les techniques de
transmission utilisées, c'est-à-dire comment un émetteur
peut envoyer un signal que le récepteur reconnaîtra comme
étant un « 1 » ou un « 0 ».
III.3.1. La transmission en bande de base
Les transmissions en bande de base sont des transmissions sans
modulation. Elles consistent à émettre sur la ligne des courants
qui reflètent les bits du caractère à transmettre sous
forme de créneaux. La réalisation exacte de ces créneaux
(correspondant à un courant nul pour indiquer un « o » et
à un courant positif pour indiquer un « 1 ») est très
compliquée : il est souvent difficile de faire passer du courant continu
entre deux stations. Le même défaut se retrouve dans le code NRZ
(Non Return to Zéro). Le code bipolaire est un code tout ou rien, mais
où le bit « 1 » est indiqué par un courant positif ou
négatif à tour de rôle, pour éviter les courants
continus. Ce code laisse le bit « 0 » définit par un courant
nul.
Le code bipolaire à haute densité permet de ne
pas laisser le courant nul pendant les suites de « 0 ». Des suites
spéciales de remplissage (courant négatif, nul ou positif) sont
alors insérées à la place de ces zéros. Un nouveau
« 1 » est indiqué par un courant positif ou négatif, en
violation avec la suite de remplissage.
~ 42 ~
Code bipolaire à haute densité
Code tout ou rien 0
Code NRZ
Code bipolaire
1 1
0
0
Figure représentant les codes en bande de base
Cette méthode de transmission ne peut être
utilisée que sur de très courtes distances : moins de 5 Km. Sur
des distances plus longues, on utilise un signal de forme sinusoïdale. Ce
type de signal, même affaibli, pourra très bien être
décodé par le récepteur. Dès qu'un terminal
situé à une distance un peu importante doit être atteint,
un modem (Modulateur Démodulateur) est
nécessaire pour que le taux d'erreurs soit acceptable.
III.3.2. Les modems
Les modems permettent de transformer les signaux binaires en
bande de base en signaux analogiques très spécifiques indiquant
également une valeur numérique. Le signal se présente sous
une forme sinusoïdale. Les modems s'adaptent aux différents types
de support.
~ 43 ~
Il arrive que des fonctionnalités additionnelles soient
ajoutées au modem. Une fonctionnalité importante concerne la
compression des données : plutôt que d'augmenter la vitesse, on
compresse les données.
Le protocole MNP (Microcom Networking Protocol) constitue un
bel exemple de proposition de compression et de correction d'erreurs. Ce
protocole a été mis au point par le constructeur américain
Microcom, et normalisé par l'avis V42bis de l'UIT-T.
Les principales caractéristiques de ces normes sont les
suivantes :
MNP 1 : Protocole de correction d'erreurs au niveau de l'octet
;
MNP 2 : Protocole de correction d'erreurs au niveau de l'octet
en full-duplex à 2400bit/s ;
MNP 3 : Protocole de correction d'erreurs au niveau bit ;
MNP 4 : Protocole de correction d'erreurs au niveau paquet ;
MNP 5 : Protocole de correction d'erreurs et de compression de
données de moyenne 2 ;
MNP 6 : Protocole de correction d'erreurs et de compression de
données en half-duplex ;
MNP 7 : Protocole de correction d'erreurs et de compression de
données de moyenne 7 ;
MNP 8 : n'existe pas ;
MNP 9 : Protocole de correction d'erreurs et de compression de
données pour modem jusqu'à 38,4 Kbit/s ;
MNP 10 : Protocole de correction d'erreurs au niveau paquet,
comme MNP 4, mais avec des paquets de tailles variables.
III.3.3. Transmission des données sur le
réseau commuté
La numérisation des commutateurs, en plus du transport
de la voix, a permis le transport des données à 64 Kbits/s, ce
qui constitue une limitation palliée ensuite par l'arrivée de
l'ADSL (Asymmetrical Digital Subscriber Line). La technologie ADSL permet de
transmettre des volumes de données très importants sur des lignes
téléphoniques classiques. Comme l'indique son nom, les
débits de données sont asymétriques, donc plus importants
en réception qu'en envoi.
~ 44 ~
L'informatique tient aujourd'hui une place considérable
dans l'utilisation du réseau téléphonique commuté.
Le modem (contraction de
modulateur-démodulateur) est
l'interface qui permet de véhiculer des informations analogiques en
convertissant les signaux numériques en signaux analogiques (Modulation)
et vice versa (Démodulation).
L'ordinateur envoie des commandes au modem : initialisation,
numérotation, raccrochage, le modem est alors en mode « commande
». Quand la liaison avec un autre modem est établie sur le
Réseau Téléphonique Commuté (RTC), le modem est
placé en mode « données » et à l'émission
transmet en modulant les données numériques émises par
l'ordinateur en une fréquence porteuse sur la ligne
téléphonique. En réception, le modem démodule
l'information de la fréquence porteuse pour obtenir le signal
numérique exploitable par l'ordinateur.
Signalons toutefois que l'inconvénient de la
technologie RTC réside dans le fait qu'un utilisateur naviguant sur le
réseau Internet aura sa ligne de téléphone occupée,
tant qu'il reste connecté au réseau.
III.4. LES TRANSMISIONS DANS UN RÉSEAU
Afin de transmettre l'information sur un support de
transmission, nous avons vu que l'on doit préalablement la coder de
façon adéquate. Deux approches sont possibles pour le transport
des éléments binaires provenant des applications :
Soit l'information est véhiculée directement en
bande de base ;
Soit chaque type d'information se voit allouer une bande
passante en fonction de ses besoins (approche dite « large bande »).
Dans cette approche, les signaux numériques sont modulés sur une
porteuse.
III.4.1. L'approche bande de base
Le transport en bande de base est la plus simple des deux
techniques, car aucune modulation n'est nécessaire. La suite binaire
représentant l'information est directement transmise sur le support par
des changements discrets dans les signaux représentant l'information
(sous forme de transmissions de tension ou d'impulsions lumineuses si l'on
utilise des fibres optiques). Les signaux bande de base sont sujets à
une atténuation dont
~ 45 ~
l'importance dépend du support employé et
doivent donc être régénérés
périodiquement sur une longue distance. Cette
régénération s'effectue à l'aide de
récepteurs, qui reçoivent les signaux et les mémorisent
une fraction de seconde avant de les retransmettre sur la ligne sortante.
III.4.2. L'approche large bande
Cette méthode utilise le multiplexage en
fréquence. Différents canaux sont créés,
résultant de la division de la bande passante du support en plusieurs
sous-bandes de fréquence. Ce type de technique a l'avantage de permettre
des transmissions simultanées indépendantes. Chaque appareil sur
le câble est équipé d'un modem particulier ; cela permet de
choisir le mode de transmission (numérique ou analogique) le mieux
adapté et le plus efficace pour le type d'informations à
transmettre.
Par exemple, les données informatiques sont
émises sur une bande numérique, la voix et l'image sur une bande
analogique. Cependant, cela augmente le coût de connexion par rapport
à un réseau bande de base.
Bref, les systèmes bande de base sont plus simples
à installer et généralement moins coûteux que les
systèmes large bande. Cependant, ces derniers offrent des
possibilités de communications multimodes et permettent de couvrir des
distances plus grandes.
III.5. TYPES DE TRANSMISSION DE DONNÉES
Il existe trois types de transmission des données sur un
réseau.
1. La monodiffusion : les données sont
transmises à un seul poste.
2. La multidiffusion : les données
sont transmises une seule fois, aux différents ordinateurs qui en font
la demande.
3. La diffusion : les données sont
envoyées à l'ensemble du réseau sans distinction.
Signalons aussi qu'il existe deux types de transmissions sans
fil. Il y a :
1. La transmission infrarouge : aucun
obstacle ne doit être présent entre l'émetteur et le
récepteur. Les signaux sont limités en distance, car très
sensibles aux interférences.
~ 46 ~
2. La transmission radio à bande étroite
: l'émetteur et le récepteur peuvent être
séparés par des obstacles (excepté des objets
métalliques).
Ces transmissions supposent trois principales
catégories de câbles réseaux qui sont :
1. Les câbles à paires torsadées
: se composent de huit brins de cuivre isolés, torsadés
par paires. Il en existe deux types : les câbles UTP (Unshielded Twisted
Pair) et STP (Shielded Twisted Pair), les câbles STP sont blindés.
Ils peuvent transporter les signaux sur environ 100m. Cette catégorie de
câble est la plus répandue. Les connecteurs utilisés pour
ces câbles sont nommés RJ45 (registered Jack 45).
2. Le câble coaxial : il utilise
uniquement un fil pour transporter les données. Il est
protégé par un blindage de métal tressé. Il existe
deux types de câbles coaxiaux : le câble ThinNet (10Base2, 185 m
max) et le câble ThickNet (10Base5, 500 m max). ce type de câble
est particulièrement adapté pour des transmissions longues
distances. Ils utilisent des connecteurs de type BNC.
3. La fibre optique : adaptée aux
transmissions rapides et fiables, ce type de câble est très peu
sensible aux interférences. Il est toutefois bien plus fragile que les
autres types de câbles.
III.6. Examen du processus de transfert de
données
Afin d'améliorer l'efficacité des transferts sur un
réseau, il est important de transmettre de petits paquets. En effet, si
l'on envoie des paquets de taille trop importante, le réseau peut se
bloquer et tout incident lors du transfert du paquet obligera à le
renvoyer dans son intégralité.
Lors de l'envoi d'un paquet sur le réseau, les
données passent par différents états. Chacun de ces
états possède une terminologie particulière : segment,
message, datagramme et trame.
~ 47 ~
Une trame comprend trois composants :
1. L'en-tête : qui contient un signal
d'alerte (permettant d'indiquer que le paquet est en cours de transmission),
l'adresse source et l'adresse de destination.
2. Les données : Ce sont les
données réelles envoyées par l'application. La taille
varie selon les limites du réseau entre 0.5 Ko et 4 Ko avec une taille
moyenne de 1.5 Ko.
3. Le délimiteur de fin de trame : sur
la plupart des protocoles, le délimiteur de fin de trame contient un CRC
(Contrôle de Redondance Cyclique).
III.7. Schématisation d'une transmission de la
source à la destination
~ 48 ~
CHAP.IV. PROGRAMMATION DE LA TRANSMISSION DES
DONNÉES
IV.0. Introduction
Ce chapitre présente un programme qui décrit la
transmission des données dans un réseau. Il s'agit de la
programmation du code de Hamming qui est connu pour son efficacité dans
la transmission des données sans erreur.
Après une brève présentation du code de
Hamming, nous allons exhiber une simulation d'une transmission de l'information
afin de mettre en lumière la façon dont une information est
codée et transmise dans un réseau. Ce réseau peut
être téléphonique, informatique ou autre.
IV.1. PRÉSENTATION DU CODE DE HAMMING
Le code de Hamming est utilisé dans les transmissions
des données, car il permet de détecter et de corriger une erreur
survenue dans un bloc
transmis. Son principe est simple. On fixe un entier k et on code
chaque bloc de m = 2k-k - 1 bits de données par un bloc de n
= 2k - 1 bits en ajoutant donc k bits, dits de correction, à
certaines positions au bloc de m bits. Le tableau suivant indique les nombres
de bits de correction, de données pour certaines valeurs de k.
k = 3
|
m = 4
|
n = 7
|
k = 4
|
m = 11
|
n = 15
|
K = 5
|
m = 26
|
n = 31
|
A. Position de k bits de correction
Les k bits de correction sont placés dans le bloc
envoyé aux positions d'indice une puissance de 2 en comptant à
partir de la gauche. Ainsi, en notant k1 k2 k3 les bits de correction et m1 m2
m3 m4 les bits de données, le bloc envoyé est :
A = k1 k2 m1 k3 m2 m3 m4.
B. Calcul de k bits de correction
Les k bits de correction sont calculés en utilisant une
matrice de parité H, représentée ci-dessous pour k = 3.
- 49 -
H
Remarque : La colonne i de la matrice représente
en binaire la valeur de i. Les k bits de correction sont tels qu'en
considérant le vecteur
? ?
k1
? ?
? ?
k2
? ?
m1
? ?
A= ?k3
? ?
m2
? ?
? ?
m3
? ?
? ?
m4
|
? ?
0
, on ait H.A = ? ?
? ?
0
? ?
? ?
0
|
|
On obtient ainsi 3 équations scalaires que doivent
vérifier les k bits de
correction :
0mod2
?+ + + = k m m m ?1 1 2 4
? + + + = k m m m
? + + + =
?k m m m
0 2 1 2 4 mod2
0 3 1 2 4 mod2
Remarque : les opérations d'addition sont faites
à modulo 2. Le bloc A parfaitement déterminé est alors
envoyé.
C. Réception des données et
vérification
Le bloc A est alors envoyé. Le bloc C= c1 c2 c3
c4 c5 c6 c7, reçu, peut être différent du bloc A s'il y a
eu des perturbations la ligne.
Si on considère qu'il n'y a eu qu'une seule
erreur de transmission, alors on peut écrire C = A + E où E,
vecteur d'erreur, est un bloc contenant 6 bits à 0 et un bit à 1.
Les positions des 0 et du 1 sont inconnues dans le bloc.
On calcule le vecteur S tel que
~ 50 ~
? ? s1 S s
? ?
= ? ?
2 = H.C = H . (A + E) = H.A + H.E = H.E
? ?
? ?
s3
Finalement, S est une des colonnes de la matrice de
parité dont l'indice nous donne la position de l'erreur dans le bloc C.
L'erreur est corrigée en changeant le bit considéré
d'état.
s3 s2 s1 est le code binaire de positon de l'erreur dans le
bloc C que nous obtenons à partir des équations suivantes :
s1 =
??
?
? s =
? 3
=
s2
mod2
mod2
mod2
(((c c c c 1 3 5 7 + + + ) c c c c 2 3 6 7 + + + ) c c c c 4
5 6 7 + + + )
Si s3 = s2 = s1 = 0, alors il n'y a pas eu d'erreur lors de la
transmission du
message.
D. Correction d'erreurs par le code de
Hamming
Un code correcteur d'erreur est utilisé pour
transmettre un message dans un canal bruité. Il permet de reconstituer
le message émis même si des erreurs (en nombre limité),
dues au bruit, ont altéré le message.
L'alphabet source, comme l'alphabet du code, est {0,1}. On
s'intéresse au codage par blocs : chaque mot de longueur m est
codé par un mot de longueur n avec n supérieur ou égal
à m. Le codage est donc une application de {0,1}m vers
{0,1}n. Parmi les n bits du mot-code que nous allons décrire,
m reproduisent le mot source, les n-m autres sont les bits de correction. Le
taux de transmission est de n/m.
On montre que si deux mots distincts du code diffèrent
au moins en d
d - 1
erreurs.
2
bits, alors le code permet de corriger exactement
Les codes de Hamming, pour lesquels n = 2k -1 et
m = n - k, permettent de corriger une erreur. Pour k fixé et n
grand, le taux de transmission est voisin de 1.
~ 51 ~
E. Famille de code de Hamming
Il existe une famille de code de Hamming, le plus
célèbre et le plus simple après le code de
répétition binaire de dimension trois et de longueur un est sans
doute le code binaire de paramètres [7, 4, 3]. Pour chaque alphabet
ayant pour nombre de lettres une puissance d'un nombre premier et pour chaque
longueur l de code, il existe un code de Hamming utilisant cet alphabet et de
longueur au moins égal à l.
Il est possible d'utiliser les outils de l'algèbre
linéaire et particulièrement la théorie des matrices pour
construire un code de Hamming. Par exemple, un mot de p bits est
représenté par un vecteur binaire de longueur p,
c'est-à-dire un élément de l'espace vectoriel (Z/2Z)p, par
exemple
? ?
1
? ?
pour 110, on a ? ?
1
? ?
? ?
0
|
.
|
|
La matrice de parité d'un code de Hamming est une
matrice binaire à k lignes et n colonnes : les colonnes contiennent les
représentations binaires des entiers entre 1 et n.
F. Eléments de base de la
formalisation
Il existe un ensemble E constitué de suites à
valeurs dans un alphabet et de longueur k, c'est-à-dire qu'à
partir du rang k, toutes les valeurs de la suite sont nulles. Ces
éléments sont l'espace des messages que l'on souhaite
communiquer. Pour munir le message de la redondance souhaitée, il existe
une application ça injective de E à valeurs dans F,
l'espace des suites de longueur n et à valeurs dans un alphabet. La
fonction ça est appelée encodage, ça(E)
aussi noté C est appelé le code, un élément de
ça(E) est un mot du code, k est la longueur du code et n la
dimension du code.
Par exemple, un mot du code utilisé par le Minitel
comporte 17 octets. Les 16 premiers octets forment un code de Hamming à
7 bits de correction : k=7, m=120 (soit 15 octets), n=127, le
128ème bit, dit bit de parité est tel que le nombre de
1 dans ces 16 octets soit pair. Le 17ème octet est
formé de 8 zéros ; il permet de détecter des incidents
importants (par exemple, la foudre). On s'intéresse ici seulement aux
127 premiers bits.
~ 52 ~
IV. 2. SIMULATION D'UN EXEMPLE DE TRANSMISSION DES
DONNÉES
IV.2.1. Exemple de transmission d'une phrase
Dans ce paragraphe, nous allons simuler le transfert de la phrase
suivante : « j'ai lu le livre. Magnifique! ». Le tableau ci-dessous
va aider à mieux expliciter cette simulation.
Dans le codage, chaque caractère de la phrase est
codé suivant le code ASCII. Ainsi sous forme de tableau,
représentons le code de chaque caractère à la source de
transfert. Nous avons la situation suivante :
~ 53 ~
Caractère
|
Code en
binaire
|
Equivalent en
décimal
|
Raccourci clavier
|
Alt+code décimal
|
J
|
01001010
|
74
|
Alt + 74
|
J
|
'
|
00100111
|
39
|
Alt + 39
|
'
|
a
|
01100001
|
97
|
Alt + 97
|
a
|
i
|
01101001
|
105
|
Alt + 105
|
i
|
|
00100000
|
32
|
Alt + 32
|
|
l
|
01101100
|
108
|
Alt +108
|
l
|
u
|
01110101
|
117
|
Alt + 117
|
u
|
|
00100000
|
32
|
Alt + 32
|
|
l
|
01101100
|
108
|
Alt +108
|
l
|
e
|
01100101
|
101
|
Alt + 101
|
e
|
|
00100000
|
32
|
Alt + 32
|
|
l
|
01101100
|
108
|
Alt +108
|
l
|
i
|
01101001
|
105
|
Alt + 105
|
i
|
v
|
01110110
|
118
|
Alt + 118
|
v
|
r
|
01110010
|
114
|
Alt + 114
|
r
|
e
|
01100101
|
101
|
Alt + 101
|
e
|
.
|
00101110
|
46
|
Alt + 46
|
.
|
|
00100000
|
32
|
Alt + 32
|
|
M
|
01001101
|
77
|
Alt + 77
|
M
|
a
|
01100001
|
97
|
Alt + 97
|
a
|
g
|
01100111
|
103
|
Alt + 103
|
g
|
n
|
01101110
|
110
|
Alt + 110
|
n
|
i
|
01101001
|
105
|
Alt + 105
|
i
|
f
|
01100110
|
102
|
Alt + 102
|
f
|
i
|
01101001
|
105
|
Alt + 105
|
i
|
q
|
01110001
|
113
|
Alt + 113
|
q
|
u
|
01110101
|
117
|
Alt + 117
|
u
|
e
|
01100101
|
101
|
Alt + 101
|
e
|
|
00100000
|
32
|
Alt + 32
|
|
!
|
00100001
|
33
|
Alt + 33
|
!
|
~ 54 ~
Chaque caractère codé à la source de
transfert est envoyé dans le réseau. Notons que dans le cas d'un
réseau téléphonique, l'application immédiate de ce
que nous expliquons ci-haut est le transfert d'un sms ou l'envoi d'un sms d'un
correspond à un autre dans le réseau ou en dehors du
réseau.
IV.2.2. Simulation de la transmission en Matlab
La simulation de ce programme exige la donnée de la
valeur de certains paramètres : m et le message à transmettre en
binaire. P étant une constante dont la valeur est 2, n est fonction de m
et k est fonction de n et de m.
Le programme écrit en Matlab est le suivant :
function encodedmsg=hamc(m,msg)
% m est un entier positif, msg= message en binaire de
longueur ((2^m-1)-m)
% code de hamming, encodage
p=2; n=2^(m)-1; k=n-m;
% polynôme générateur
if ( (p == 2) & (m <= 24) )
switch m
case 1 pol = [1 1];
1 1];
|
|
|
|
1 0
|
1];
|
|
|
|
1 0
|
0 1];
|
|
|
0 1
|
0 0
|
1];
|
|
|
1 0
|
0 0
|
0 1];
|
|
0 0
|
1 0
|
0 0
|
1];
|
|
0 1
|
1 1
|
0 0
|
0 1];
|
0 0
|
0 1
|
0 0
|
0 0
|
1];
|
0 0
|
1 0
|
0 0
|
0 0
|
0 1];
|
0 1
|
0 0
|
0 0
|
0 0
|
0 0 1];
|
1 0
|
0 1
|
0 1
|
0 0
|
0 0 0 1];
|
1 0
|
1 1
|
0 0
|
0 0
|
0 0 0 0 1];
|
1 0
|
0 0
|
0 1
|
0 0
|
0 1 0 0 0 1];
|
1 0
|
0 0
|
0 0
|
0 0
|
0 0 0 0 0 0 1];
|
1 0
|
1 0
|
0 0
|
0 0
|
0 0 0 1 0 0 0 1];
|
case 2 pol = [1
case 3 pol = [1
case 4 pol = [1
case 5 pol = [1
case 6 pol = [1
case 7 pol = [1
case 8 pol = [1
case 9 pol = [1
case 10 pol = [1
case 11 pol = [1
case 12 pol = [1
case 13 pol = [1
case 14 pol = [1
case 15 pol = [1
case 16 pol = [1
end
end
~ 55 ~
% implémentation du circuit de
codage;
b=zeros (1, m);
g= pol ;
c=b;
for i=length(msg):-1:1
u1=xor(msg(i),c(m-1)); c(1)=xor(b(1),g(2)*u1); b(1)=u1;
for j=2:m-1
c(j)=xor(b(j),g(j+1)*u1); b(j)=c(j-1);
end
c(m)=b(m); b(m)=c(m-1); end
encodedmsg=[b msg];
Simulation
Choisir m=3. Soit à transférer la lettre a dans un
réseau. Nous connaissons le code binaire de la lettre a, c'est
01100001.
Etape à suivre :
1. ouvrir MATLAB.
2. ouvrir le fichier hamc(m, msg) où m est 3 et msg est
le code de la lettre a.
3. Exécuter le fichier hamc (m,msg)
4. La lettre a est transmise sans erreur. >> hamc
(2,01100001)
ans = 1 1 1100001
>> hamc (3,01100001)
ans = 1 1 0 1100001
>> hamc (4,01100001)
ans = 1 1 0 0 1100001
>> hamc (5,01100001)
ans = 1 0 1 0 0 1100001
>> hamc (6,01100001)
ans = 1 1 0 0 0 0 1100001
>> hamc (7,01100001)
ans = 1 0 0 1 0 0 0 1100001
~ 56 ~
V. CONCLUSION GENERALE
V.1. SYNTHÈSE ET RÉSULTATS
Au terme de notre investigation, il est convenable de
présenter synthétiquement la substance de notre travail ainsi que
les résultats auxquels nous sommes aboutis. Ce travail,
reconnaissons-le, nous a fait entrer dans l'ère numérique dans
laquelle les échanges des informations à travers la
planète sont matériellement représentés sous forme
de nombres.
Certes, cette entrée dans l'ère numérique
s'est voulue progressive. Ainsi, hormis l'introduction et la conclusion, les
quatre chapitres développés dans ce travail ont concouru à
l'événement « entrée dans l'ère
numérique ».
De prime abord, le premier chapitre a posé les bases
des systèmes de codage. Il a pris en compte l'algèbre de Boole,
le système binaire ainsi que le système de numération.
L'addition binaire et la conversion du binaire en décimal ou
hexadécimal et vice versa ont été expliquées dans
le corps de ce chapitre premier.
En second lieu, le deuxième chapitre s'est largement
attelé au codage de l'information. Il a présenté le codage
des nombres entiers ainsi que le code ASCII sous sa forme originale (avec 128
caractères) et sous sa forme étendue (avec 256
caractères). Un court paragraphe sur le code Unicode a permis d'ouvrir
la possibilité de saisie des caractères non pris en charge par le
code ASCII. Il s'agit par exemple du caractère I1. Ce caractère
est affiché à l'écran en maintenant la touche ALT
enfoncée et en tapant 8477 qui est le code décimal dudit
caractère.
Le troisième chapitre s'est penché sur la
transmission des données dans un réseau. Toute information
codée peut être transmise d'un émetteur vers un
récepteur. Cette transmission connaît souvent un problème
majeur : celui des erreurs qui se glissent dans le canal de communication.
Concrètement, s'il y a erreur dans la transmission, le message transmis
change malencontreusement des « 0 » en « 1 », ou
inversement. Ces erreurs sont détectées et corrigées en
rallongeant les mots du message de façon qu'après
dégradation, on puisse reconnaître le même message. Aussi,
soulignons-le, pour détecter et corriger les inévitables erreurs
qui affectent les échanges d'information numérisée, les
spécialistes du codage en appellent à des méthodes
abstraites qui relèvent de
~ 57 ~
l'algèbre ou de la géométrie. Ainsi par
exemple, le code employé pour la gravure des disques
audionumériques permet de corriger jusqu'à 4000 bits
erronés consécutifs.
Ainsi, le quatrième chapitre a simulé le code de
transmissions de données sans erreurs : le code de Hamming. Un exemple
concret explicite le mécanisme d'envoi du message `j'ai lu le livre.
Magnifique !' dans un réseau dans le but de retracer le processus du
codage et de la transmission de l'information d'une source A vers une
destination B.
En outre, retenons que le codage fait appel à des codec
(codeur/Décodeur) s'appuyant sur des algorithmes afin de compresser une
source pleine en une forme plus légère, mais toujours exploitable
lors du décodage, par ces mêmes codecs. Dès lors, le
processus de transmission des données d'une source à une
destination se décrit par le codage de ces données en langage
binaire, puis par leur transmission dans le réseau et enfin par le
décodage des mêmes données afin de retrouver l'information
telle qu'elle était avant le codage.
V.2. PERSPECTIVES DE RECHERCHE
La transmission des données est un domaine en expansion
accélérée. Sa problématique ouvre des perspectives
de recherche intéressantes pour la science moderne, notamment dans la
compréhension des principaux concepts de la théorie de
l'information, dans la distinction des différents types de codages
utilisés dans la transmission de données , dans la mise en oeuvre
technique des fonctions d'encodage et de décodage, dans la
compréhension du principe de fonctionnement des différents
sous-systèmes , utilisés en transmission de données et
dans la distinction des différents modes de transmission de
données.
Le champ d'investigation reste donc ouvert. D'autres
chercheurs s'intéresseront à la transmission de la voix ou de
l'image. D'autres encore proposeront de mettre en oeuvre des codes correcteurs
d'erreurs partant de la géométrie algébrique. Aussi le
cryptage des données reste un domaine qui mérite une attention
particulière.
~ 58 ~
BIBLIOGRAPHIE
I. OUVRAGES
1. Clavier,J., Niquil, M., Behr, F., (1977), Théorie
et technique de la transmission des données, Masson, Paris.
2. Cohen, G., Dornstetter, J.-L., Godlewski, P., (1992),
Codes correcteurs d'erreurs: une introduction au codage
algébrique, Masson, Paris.
3. Csillag, Pierre (1990), Introduction aux codes
correcteurs, Ellipses, Paris.
4. Dromarr, D.,Ouzzani, F., Seret, D., Réseaux
informatiques. Cours et exercices. De la transmission de données
à l'accès au réseau. Tome 1. , Eyrolles.
5. Guy Pujolle, (1995), Les réseaux, Eyrolles.
6. Held, Gilbert (1986), La compression des données :
méthodes et applications, Masson, Paris.
7. Jamali,(1997), Transmission numérique et
communication entre ordinateurs, Editions de Daro, Montréal.
8. MARTIN PELAT (1997), Télévision
numérique - compression et transmission du signal, Ellipses,
Paris.
9. Maxime MAIMAn, Claude SERVIN, (1995), Autoformation en
télécoms et réseaux, Masson, Paris.
10. Milet, Pierre (1988), Intégration voix et
données, Principes et concepts, Masson, Paris.
11. Poli, A., Huguet, L., (1989), Codes correcteurs :
théorie et applications, Masson, Paris.
12. ROLIN,P.,MARTINEAU,G.,TOUTAIN,L.,LEROY,A.,(1996), Les
réseaux,
principes fondamentaux, Hermes.
13. Rosie, A.M. (1971), Théorie de l'information et de
la communication, Ellipses, Paris.
14. Roubine, E. (1970), Théorie de l'information,
Masson, Paris.
15. Spataru, Alexandru (1973), Théorie de la
transmission de l'information II : codes et décisions statistiques,
Masson, Paris.
16. Spataru, Alexandru (1987), Fondements de la
théorie de la transmission de l'information, Presses Polytechniques,
Lausanne.
17. Stein, M., (1996), Les modems pour transmission de
données, Masson, Paris.
~ 59 ~
18. VELU, J., (1955), Méthodes mathématiques
pour l'informatique, Dunod.
II. TFC ET MÉMOIRES
- Moïse Zoungrana, « transmissions des
données et de la parole sur systèmes IRT (Integrated Rural
Telephony)", Ecole nationale des télécommunications de
l'ONATEL. Source : Mémoire Online.
III. Articles
1. ARNOUX, P., "Minitel, codage et corps finis»,
Pour la science, mars 1988.
2. ARNOUX, P., «codage et
mathématiques», La science au présent, édition
Encyclopedia Universalis, 1992.
3. Claude Shannon, «A mathematical theory of
communication», Bell System Technical Journal, vol. 27, pp 379-423 et
623-656, juillet et octobre 1948.
4. LACHAUX, G., VLADUT, S., «Les codes correcteurs
d'erreurs», La Recherche, juillet-août 1955.
IV. Liens Internet
1.
http://drogo.cselt.stet.it/mpeg/
2.
http://www.cybersociety.com/Network/
3.
http://www.mines.u-nancy.fr/~tisseran/I33
Reseaux/Exposes.html
4.
http://www.strategiestm.com/DT
-23- Les codages-de-source.html
5.
http://smf.emath.fr//Publications/ExplosionDesMathematiques/
~ 60 ~
TABLE DES MATIÈRES
0. INTRODUCTION GÉNÉRALE 1
0.1. Choix et intérêt du sujet 8
0.2. Etat de la question 9
0.3. Problématique 10
0.4. Hypothèse 11
0.5. Méthodes et techniques 11
a. Méthodes 11
b. Techniques 12
0.6. Délimitation du sujet 12
0.7. Difficultés rencontrées 12
0.8. Plan du travail 13
CHAP. I. : GÉNÉRALITÉS SUR LES
SYSTÈMES DE CODAGE 14
I.0. Introduction 14
I.1. RAPPEL DE NOTIONS DE L'ALGÈBRE DE BOOLE 14
I.1.1. Les opérateurs logiques 14
I.1.2. Axiomes 14
I.1.3. Théorèmes 15
I.1.4. Tables de vérité 15
I.2. LE BINAIRE 17
I.2.1. Les systèmes de codage 17
A. Les systèmes binaires 17
B. Le système hexadécimal 20
I.2.2. Les systèmes de numération 20
A. Addition binaire 20
B. Conversion d'une base quelconque en base décimale
21
C. Conversion binaire en hexadécimal 23
D. Conversion hexadécimal en binaire 23
CHAP. II. LE CODAGE DE L'INFORMATION 24
II.0. Introduction 24
II.1. LE CODAGE DES NOMBRES ENTIERS 24
II.1.1. Le codage des entiers en général 24
II.1.2. Codage des nombres entiers : binaire signé
25
TABLE DES MATIÈRES 60
~ 61 ~
II.1.3. Un autre codage des nombres entiers :
complément à deux 26
II.2. LE CODAGE DES CARACTÈRES : LE CODE ASCII 26
II.2.1. Le code ASCII original (128 caractères) 27
II.2.2. Le code ASCII étendu (256 caractères)
32
II.2.3. Autres codages 37
CHAP. III. LA TRANSMISSION DES
DONNÉES DANS UN RÉSEAU 38
III.0. Introduction 38
III.1. MODES DE TRANSMISSION DES DONNÉES 38
III.2. LES SENS DE TRANSMISSION DES DONNÉES ENTRE DEUX
POINTS 40
III.3. LES TECHNIQUES DE TRANSMISSION 41
III.3.1. La transmission en bande de base 41
III.3.2. Les modems 42
III.3.3. Transmission des données sur le réseau
commuté 43
III.4. LES TRANSMISIONS DANS UN RÉSEAU 44
III.4.1. L'approche bande de base 44
III.4.2. L'approche large bande 45
III.5. TYPES DE TRANSMISSION DE DONNÉES 45
III.6. Examen du processus de transfert de données
46
III.7. Schéma d'une transmission de la
source à la destination 40
CHAP.IV. PROGRAMMATION DE LA TRANSMISSION DES DONNÉES
48
IV.0. Introduction 48
IV.1. PRÉSENTATION DU CODE DE HAMMING 48
IV.2. SIMULATION D'UN EXEMPLE DE TRANSMISSION DES
DONNÉES 52
IV.2.1. Exemple de transmission d'une phrase 52
IV.2.2. Simulation de la transmission en Matlab 54
V. CONCLUSION GÉNÉRALE 56
V.1. SYNTHÈSE ET RÉSULTATS 56
V.2. PERSPECTIVES DE RECHERCHE 57
BIBLIOGRAPHIE 58
~ 62 ~