le forum de tous vos problèmes informatique

Résolution de problemes en informatique en tout genre
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  ConnexionConnexion  

Partagez | 
 

 Présentation du binaire !

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Momo
Caporal-chef


Nombre de messages : 120
Localisation : St Etienne
Date d'inscription : 16/01/2005

MessageSujet: Présentation du binaire !   Sam 22 Jan à 10:43

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. L'homme travaille quant à lui avec 10 chiffres (0,1,2,3,4,5,6,7,8,9), on parle alors de base décimale.

Le bit


Bit (noté b avec une minuscule dans les notations) signifie "binary digit", c'est-à-dire 0 ou 1 en numérotation binaire. C'est 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 ou magnétique, qui, lorsqu'elle atteint une certaine valeur, correspond à la valeur 1.
par des aspérités géométriques dans une surface.
grâce à des bistables, c'est-à-dire des composants électroniques qui ont deux états d'équilibre (un correspond à l'état 1, l'autre à 0)
Avec un bit il est ainsi possible d'obtenir deux états: soit 1, soit 0.
2 bits rendent possible l'obtention de quatre états différents (2*2):

0 0
0 1
1 0
1 1


Avec 3 bits il est possible d'obtenir huit états différents (2*2*2):

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Pour un groupe de n bits, il est possible de représenter 2n valeurs.

L'octet


L'octet (en anglais byte, noté B avec une majuscule dans les notations) est une unité d'information composée de 8 bits. Il permet de stocker un caractère, telle qu'une lettre, un chiffre ...
Ce regroupement de nombres par série de 8 permet une lisibilité plus grande, au même titre que l'on apprécie, en base décimale, de regrouper les nombres par trois pour pouvoir distinguer les milliers. Par exemple le nombre 1 256 245 est plus lisible que 1256245.

Une unité d'information composée de 16 bits est généralement appelée mot (en anglais word)

Une unité d'information de 32 bits de longueur est appelée double mot (en anglais double word, d'où l'appelation dword).

Pour un octet, le plus petit nombre est 0 (représenté par huit zéros 00000000), le plus grand est 255 (représenté par huit chiffre "un" 11111111), ce qui représente 256 possibilités de valeurs différentes.

27 =128 26 =64 25 =32 24 =16 23 =8 22 =4 21 =2 20 =1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1


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) = 210 octets = 1024 octets
Un Mégaoctet (Mo) = 220 octets = 1024 Ko = 1 048 576 octets
Un Gigaoctet (Go) = 230 octets = 1024 Mo = 1 073 741 824 octets
Un Téraoctet (To) = 240 octets = 1024 Go = 1 099 511 627 776 octets



L'IEC a également défini le kilo binaire (kibi), le méga binaire (Mébi), le giga binaire (Gibi), le tera binaire (Tebi).
Voici leurs définitions :

Un kibioctet (kio ou kiB) vaut 210 = 1024 octets
Un Mébioctet (Mio ou MiB)vaut 220 =1 048 576 octets
Un Gibioctet (Gio ou GiB) vaut 230 =1 073 741 824 octets
Un Tébioctet (Tio ou TiB) vaut 240 =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 :
kB, MB, GB, TB
Notez l'utilisation d'un B majuscule pour différencier Byte et bit.

Voici une capture d'écran du logiciel HTTrack, l'aspirateur de sites le plus populaire, montrant l'utilisation de cette notation :



Les opérations en binaire


Les opérations arithmétiques simples telles que l'addition, la soustraction et la multiplication sont faciles à effectuer en binaire.

L'addition en binaire


L'addition en binaire se fait avec les mêmes règles qu'en décimale:
On commence à additionner les bits de poids faibles (les bits de droite) puis on a des retenues lorsque la somme de deux bits de mêmes 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


La multiplication en binaire


La table de multiplication en binaire est très simple:

0x0=0
0x1=0
1x0=0
1x1=1
La multiplication se fait en formant un produit partiel pour chaque digit du multiplieur (seul les bits non nuls donneront un résultat non nul). Lorsque le bit du multiplieur est nul, le produit partiel est nul, lorsqu'il vaut un, le produit partiel est constitué du multiplicande décalé du nombre de positions égal au poids du bit du multiplieur.
Par exemple: 0 1 0 1 multiplicande
x 0 0 1 0 multiplieur
- - - - - -
0 0 0 0
0 1 0 1
0 0 0 0
- - - - - -
0 1 0 1 0

Ce document intitulé «Le codage binaire» issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jassomo.club.fr/index.htm
Momo
Caporal-chef


Nombre de messages : 120
Localisation : St Etienne
Date d'inscription : 16/01/2005

MessageSujet: Re: Présentation du binaire !   Sam 22 Jan à 10:45

La base hexadécimale


Les nombres binaires étant de plus en plus longs, il a fallu introduire une nouvelle base: la base hexadécimale.
La base hexadécimale consiste à compter sur une base 16, c'est pourquoi au-delà des 10 premiers chiffres on a décidé d'ajouter les 6 premières lettres : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

Base décimale 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Base hexa - décimale 0 1 2 3 4 5 6 7 8 9 A B C D E F
Base binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111


Un exemple



Le nombre 27 (en base 10) vaut en base 16 : 1*161 + 11*160= 1*161 + B*160
c'est-à-dire 1B en base 16.

Le nombre FB3 (en base 16) vaut en base 10 : F*162 + B*161 + 3*160=3840+176+3=4019

Pour convertir un octet en hexadécimale, on le partage en 2 groupes de 4 bits, qui correspondent chacun à un chiffre hexadécimal.

2 A D 5
0010 1010 1101 0101

Ce document intitulé «La base hexadécimale» issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jassomo.club.fr/index.htm
Momo
Caporal-chef


Nombre de messages : 120
Localisation : St Etienne
Date d'inscription : 16/01/2005

MessageSujet: Re: Présentation du binaire !   Sam 22 Jan à 10:46

Représentation d'un nombre dans un ordinateur


On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci puisse les stocker, les manipuler. Toutefois le problème est qu'un nombre mathématique peut être infini (aussi grand que l'on veut), mais la représentation d'un nombre dans un ordinateur doit être fait sur un nombre de bits prédéfini. Il s'agit donc de prédéfinir un nombre de bits et la manière de les utiliser pour que ceux-ci servent le plus efficacement possible à représenter l'entité. Ainsi il serait idiot de coder un caractère sur 16 bits (65536 possibilités) alors qu'on en utilise généralement moins de 256...

Représentation d'un entier naturel


Un entier naturel est un entier positif ou nul. Le choix à faire (c'est-à-dire le nombre de bits à utiliser) dépend de la fourchette des nombres que l'on désire utiliser. Pour coder des nombres entiers naturels compris entre 0 et 255, il nous suffira de 8 bits (un octet) car 28=256. D'une manière générale un codage sur n bits pourra permettre de représenter des nombres entiers naturels compris entre 0 et 2n-1.

Pour représenter un nombre entier naturel après avoir défini le nombre de bits sur lequel on le code, il suffit de ranger chaque bit dans la cellule binaire correspondant à son poids binaire de la droite vers la gauche, puis on "remplit" les bits non utilisés par des zéros.

Représentation d'un entier relatif


Un entier relatif est un entier pouvant être négatif. Il faut donc coder le nombre de telle façon que l'on puisse savoir s'il s'agit d'un nombre positif ou d'un nombre négatif, et il faut de plus que les règles d'addition soient conservées. L'astuce consiste à utiliser un codage que l'on appelle complément à deux.

un entier relatif positif ou nul sera représenté en binaire (base 2) comme un entier naturel, à la seule différence que le bit de poids fort (le bit situé à l'extrême gauche) représente le signe. Il faut donc s'assurer pour un entier positif ou nul qu'il est à zéro (0 correspond à un signe positif, 1 à un signe négatif). Ainsi si on code un entier naturel sur 4 bits, le nombre le plus grand sera 0111 (c'est-à-dire 7 en base décimale).
D'une manière générale le plus grand entier relatif positif codé sur n bits sera 2n-1-1
un entier relatif négatif grâce au codage en complément à deux.
Principe du complément à deux:
soit à représenter un nombre négatif.
Prenons son opposé (son équivalent en positif)
On le représente en base 2 sur n-1 bits
On complémente chaque bit (on inverse, c'est-à-dire que l'on remplace les zéros par des 1 et vice-versa)
On ajoute 1
On remarquera qu'en ajoutant le nombre et son complément à deux on obtient 0...
Voyons maintenant cela sur un exemple:
On désire coder la valeur -5 sur 8 bits. Il suffit
d'écrire 5 en binaire: 00000101
de complémenter à 1: 11111010
d'ajouter 1: 11111011
la représentation binaire de -5 sur 8 bits est 11111011
Remarques:
Le bit de poids fort est 1, on a donc bien un nombre négatif
Si on ajoute 5 et -5 (00000101 et 11111011) on obtient 0 (avec une retenue de 1...)
Représentation d'un nombre réel


Il s'agit d'aller représenter un nombre binaire à virgule (par exemple 101,01 qui ne se lit pas cent un virgule zéro un puisque c'est un nombre binaire mais 5,25 en décimale) sous la forme 1,XXXXX... * 2n (c'est-à-dire dans notre exemple 1,0101*22). La norme IEEE définit la façon de coder un nombre réel.
Cette norme se propose de coder le nombre sur 32 bits et définit trois composantes:

le signe est représenté par un seul bit, le bit de poids fort (celui le plus à gauche)
l'exposant est codé sur les 8 bits consécutifs au signe
la mantisse (les bits situés après la virgule) sur les 23 bits restants
Ainsi le codage se fait sous la forme suivante:
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
le s représente le bit relatif au signe
les e représentent les bits relatifs à l'exposant
les m représentent les bits relatifs à la mantisse
Certaines conditions sont toutefois à respecter pour les exposants:

l'exposant 00000000 est interdit
l'exposant 11111111 est interdit. On s'en sert toutefois pour signaler des erreurs, on appelle alors cette configuration du nombre NaN, ce qui signifie Not a number
les exposants peuvent ainsi aller de -126 à 127
Voyons voir ce codage sur un exemple:
Soit à coder la valeur 525,5

525,5 s'écrit en base 2 de la façon suivante:
1000001101,1
on veut l'écrire sous la forme 1.0000011011 x 29
Par conséquent:
le bit s vaut 1
l'exposant vaut 9, soit 1001
la mantisse est 10000011011
La représentation du nombre 525.5 en binaire avec la norme IEEE est:
10000100100000000000010000011011

Ce document intitulé «Représentation des nombres entiers et réels» issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jassomo.club.fr/index.htm
Momo
Caporal-chef


Nombre de messages : 120
Localisation : St Etienne
Date d'inscription : 16/01/2005

MessageSujet: Re: Présentation du binaire !   Sam 22 Jan à 10:47

Le codage des informations


Le morse a été le premier codage a permettre une communication longue distance. C'est Samuel F.B.Morse qui l'a mis au point en 1844. Ce code est composé de points et de tirets (un codage binaire en quelque sorte...). Il permit d'effectuer des communications beaucoup plus rapides que le Pony Express. L'interpréteur était l'homme à l'époque, il fallait donc une bonne connaissance du code...

De nombreux codes furent inventés dont le code d'Émile Baudot (portant d'ailleurs le nom de code Baudot, les anglais l'appelaient Murray Code).

Le 10 mars 1876, le Dr Graham Bell met au point le téléphone, une invention révolutionnaire qui permet de faire circuler de l'information vocale dans des lignes métalliques. Pour l'anecdote, la Chambre des représentants a décidé que l'invention du téléphone revenait à Antonio Meucci. Ce dernier avait en effet déposé une demande de brevet en 1871, mais n'avait pas pu financer celle-ci au-delà de 1874.

Ces lignes permirent l'essor des télescripteurs, des machines permettant de coder et décoder des caractères grâce au code Baudot (Les caractères étaient alors codés sur 5 bits, il y avait donc 32 caractères uniquement...).

Dans les années 60, le code ASCII (American Standard Code for Information Interchange) est adopté comme standard. Il permet le codage de caractères sur 8 bits, soit 256 caractères possibles.

Qu'est-ce que le code ASCII?


La mémoire de l'ordinateur conserve toutes les données sous forme numérique. Il n'existe pas de méthode pour stocker directement les caractères. Chaque caractère possède donc son équivalent en code numérique: c'est le code ASCII (American Standard Code for Information Interchange - traduisez " Code Americain Standard pour l'Echange d'Informations"). Le code ASCII de base représentait les caractères sur 7 bits (c'est-à-dire 128 caractères possibles, de 0 à 127).


Les codes 0 à 31 ne sont pas des caractères. On les appelle caractères de contrôle car ils permettent de faire des actions telles que:
retour à la ligne (CR)
Bip sonore (BEL)
Les codes 65 à 90 représentent les majuscules
Les codes 97 à 122 représentent les minuscules
(il suffit de modifier le 6ème bit pour passer de majuscules à minuscules, c'est-à-dire ajouter 32 au code ASCII en base décimale)
Table des caractères ASCII



caractère code ASCII code Hexadécimal
NUL (Null) 0 00
SOH (Start of heading) 1 01
STX (Start of text) 2 02
ETX (End of text) 3 03
EOT (End of transmission) 4 04
ENQ (Enquiry) 5 05
ACK (Acknowledge) 6 06
BEL (Bell) 7 07
BS (Backspace) 8 08
TAB (tabulation horizontale) 9 09
LF (Line Feed, saut de ligne) 10 0A
VT (Vertical tabulation, tabulation verticale) 11 0B
FF (Form feed) 12 0C
CR (Carriage return, retour à la ligne) 13 0D
SO (Shift out) 14 0E
SI (Shift in) 15 0F
DLE (Data link escape) 16 10
DC1 (Device control 1) 17 11
DC2 (Device control 2) 18 12
DC3 (Device control 3) 19 13
DC4 (Device control 4) 20 14
NAK (Negative acknowledgement) 21 15
SYN (Synchronous idle) 22 16
ETB (End of transmission block, fin de bloc de transmission) 23 17
CAN (Cancel, annulation) 24 18
EM (End of medium, fin du médium) 25 19
SUB (Substitute, substitut) 26 1A
ESC (Escape, caractère d'échappement) 27 1B
FS (File separator, séparateur de fichier) 28 1C
GS (Group separator, séparateur de groupe) 29 1D
RS (Record separator, séparateur d'enregistrement) 30 1E
US (Unit separator, séparateur d'enregistrement) 31 1F
SP (Space, espace) 32 20
! 33 21
" 34 22
# 35 23
$ 36 24
% 37 25
& 38 26
' 39 27
( 40 28
) 41 29
* 42 2A
+ 43 2B
, 44 2C
- 45 2D
. 46 2E
/ 47 2F
0 48 30
1 49 31
2 50 32
3 51 33
4 52 34
5 53 35
6 54 36
7 55 37
8 56 38
9 57 39
: 58 3A
; 59 3B
< 60 3C
= 61 3D
> 62 3E
? 63 3F
@ 64 40
A 65 41
B 66 42
C 67 43
D 68 44
E 69 45
F 70 46
G 71 47
H 72 48
I 73 49
J 74 4A
K 75 4B
L 76 4C
M 77 4D
N 78 4E
O 79 4F
P 80 50
Q 81 51
R 82 52
S 83 53
T 84 54
U 85 55
V 86 56
W 87 57
X 88 58
Y 89 59
Z 90 5A
[ 91 5B
\ 92 5C
] 93 5D
^ 94 5E
_ 95 5F
` 96 60
a 97 61
b 98 62
c 99 63
d 100 64
e 101 65
f 102 66
g 103 67
h 104 68
i 105 69
j 106 6A
k 107 6B
l 108 6C
m 109 6D
n 110 6E
o 111 6F
p 112 70
q 113 71
r 114 72
s 115 73
t 116 74
u 117 75
v 118 76
w 119 77
x 120 78
y 121 79
z 122 7A
{ 123 7B
| 124 7C
} 125 7D
~ 126 7E
Touche de suppression 127 7F

Table des caractères ASCII Etendue


Le code ASCII a été mis au point pour la langue anglaise, il ne contient donc pas de caractères accentués, ni de caractères spécifiques à une langue. Pour coder ce type de caractère il faut recourir à un autre code. Le code ASCII a donc été étendu à 8 bits (un octet) pour pouvoir coder plus de caractères (on parle d'ailleurs de code ASCII étendu...).
Ce code attribue les valeurs 0 à 255 (donc codées sur 8 bits, soit 1 octet) aux lettres majuscules et minuscules, aux chiffres, aux marques de ponctuation et aux autres symboles (caractères accentués dans le cas du code iso-latin1).

Le code ASCII étendu n'est pas unique et dépend fortement de la plateforme utilisée.
Les deux jeux de caractères ASCII étendus les plus couramment utilisés sont :

Le code ASCII étendu OEM, c'est-à-dire celui qui équipait les premières machines de type IBM PC


Le code ASCII étendu ANSI, utilisé par les systèmes d'exploitation récents


Le code EBCDIC


Le code EBCDIC (Extended Binary-Coded Decimal Interchange Code), développé par IBM, permet de coder des caractères sur 8 bits. Bien que largement répandu sur les machines IBM, il n'a pas eu le succès qu'a connu le code ASCII.

Unicode


Le code Unicode est un système de codage des caractères sur 16 bits mis au point en 1991. Le système Unicode permet de représenter n'importe quel caractère par un code sur 16 bits, indépendamment de tout système d'exploitation ou langage de programmation.

Il regroupe ainsi la quasi-totalité des alphabets existants (arabe, arménien, cyrillique, grec, hébreu, latin, ...) et est compatible avec le code ASCII.

L'ensemble des codes Unicode est disponible sur le site http://www.unicode.org.

Ce document intitulé «Le code ASCII» issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jassomo.club.fr/index.htm
Momo
Caporal-chef


Nombre de messages : 120
Localisation : St Etienne
Date d'inscription : 16/01/2005

MessageSujet: Re: Présentation du binaire !   Sam 22 Jan à 10:48

Le contrôle d'erreurs


Le codage binaire est très pratique pour une utilisation dans des appareils électroniques tels qu'un ordinateur, dans lesquels l'information peut être codée grâce à la présence ou non d'un signal électrique.

Cependant le signal électrique peut subir des perturbations (distortion, présence de bruit), notamment lors du transport des données sur un long trajet. Ainsi, le contrôle de la validité des données est nécessaire pour certaines applications (professionelles, bancaires, industrielles, confidentielles, relatives à la sécurité, ...).

C'est pourquoi il existe des mécanismes permettant de garantir un certain niveau d'intégrité des données, c'est-à-dire de fournir au destinataire une assurance que les données reçues sont bien similaires aux données émises. La protection contre les erreurs peut se faire de deux façons:

soit en fiabilisant le support de transmission, c'est-à-dire en se basant sur une protection physique. Une liaison conventionnelle a généralement un taux d'erreur compris entre 10-5 et 10-7.
soit en mettant en place des mécanismes logiques de détection et de correction des erreurs.
La plupart des systèmes de contrôle d'erreur au niveau logique sont basés sur un ajout d'information (on parle de "redondance") permettant de vérifier la validité des données. On appelle somme de contrôle cette information supplémentaire.

La correction d'erreurs



C'est ainsi que des systèmes de détection d'erreur plus perfectionnés ont été mis au point, ces codes sont appelées

codes autocorrecteurs
codes autovérificateurs
Le contrôle de parité



Le contrôle de parité (appelé parfois VRC, pour Vertical Redundancy Check ou Vertical Redundancy Checking) est un des systèmes de contrôle les plus simples. Il consiste à ajouter un bit supplémentaire (appelé bit de parité) à un certain nombre de bits de données appelé mot de code (généralement 7 bits, pour former un octet avec le bit de parité) dont la valeur (0 ou 1) est telle que le nombre total de bits à 1 soit pair. Pour être plus explicite il consiste à ajouter un 1 si le nombre de bits du mot de code est impair, 0 dans le cas contraire.

Prenons l'exemple suivant:



Dans cet exemple, le nombre de bit de données à 1 est pair, le bit de parité est donc positionné à 0. Dans l'exemple suivant, par contre, les bits de données étant en nombre impair, le bit de parité est à 1. :



Imaginons désormais qu'après transmission le bit de poids faible (le bit situé à droite) de l'octet précédent soit victime d'une interférence:



Le bit de parité ne correspond alors plus à la parité de l'octet: une erreur est détectée.

Toutefois, si deux bits (ou un nombre pair de bits) venaient à se modifier simultanément lors du transport de données, aucune erreur ne serait alors détectée...



Le système de contrôle de parité ne détectant que les erreurs en nombre impair, il ne permet donc de détecter que 50% des erreurs. Ce système de détection d'erreurs possède également l'inconvénient majeur de ne pas permettre de corriger les erreurs détectées (le seul moyen est d'exiger la retransmission de l'octet erroné, ...).

Le contrôle de parité croisé


Le contrôle de parité croisé (aussi appelé contrôle de redondance longitudinale ou Longitudinal redundancy Check, noté LRC) consiste non pas à contrôler l'intégrité des données d'un caractère, mais à contrôler l'intégrité des bits de parité d'un bloc de caractères.

Soit "HELLO" le message à transmettre, en utilisant le code ASCII standard. Voici les données telles qu'elles seront transmises avec les codes de contrôle de parité croisé :

Lettre Code ASCII
(sur 7 bits) Bit de parité
(LRC)
H 1001000 0
E 1000101 1
L 1001100 1
L 1001100 1
0 1001111 1
VRC 1000010 0


Le contrôle de redondance cyclique


Le contrôle de redondance cyclique (noté CRC, ou en anglais cyclic redundancy check) est un moyen de contrôle d'intégrité des données puissant et facile à mettre en oeuvre. Il représente la principale méthode de détection d'erreurs utilisée dans les télécommunications.

Principe



Le contrôle de redondance cyclique consiste à protéger des blocs de données, appelés trames (frames en anglais). A chaque trame est associé un bloc données, appelé code de contrôle (parfois CRC par abus de langage ou FCS pour Frame Check Sequence dans le cas d'un code de 32 bits). Le code CRC contient des éléments redondants vis-à-vis de la trame, permettant de détecter les erreurs, mais aussi de les réparer.



Le principe du CRC consiste à traiter les séquences binaires comme des polynômes binaires, c'est-à-dire des polynômes dont les coefficients correspondent à la séquence binaire. Ainsi la séquence binaire 0110101001 peut être représenté sous la forme polynômiale suivante :

0*X9 + 1*X8 + 1*X7 + 0*X6 + 1*X5 + 0*X4 + 1*X3 + 0*X2 + 0*X1 + 1*X0
soit
X8 + X7 + X5 + X3 + X0
ou encore
X8 + X7 + X5 + X3 + 1
De cette façon, le bit de poids faible de la séquence (le bit le plus à droite) représente le degré 0 du polynôme (X0 = 1), le 4ème bit en partant de la droite représente le degré 3 du polynôme (X3), ... Une séquence de n bits constitue donc un polynôme de degré maximal n-1. Toutes les expressions polynômiales sont manipulées par la suite avec une arithmétique modulo 2.

Dans ce mécanisme de détection d'erreur, un polynôme prédéfini (appelé polynôme générateur et noté G(X)) est connu de l'émetteur et le récepteur. La détection d'erreur consiste pour l'émetteur à effectuer un algortihme sur les bits de la trame afin de générer un CRC, et de transmettre ces deux éléments au récepteur. Il suffit alors au récepteur d'effectuer le même calcul afin de vérifier que le CRC est valide.

Application pratique



Soit M le message correspondant aux bits de la trame à envoyer et M(X) le polynôme associé. Appelons M' le message transmis, c'est-à-dire le message initial auquel aura été concaténé le CRC de n bits. Le CRC est tel que M'(X)/G(X)=0. Le code CRC est ainsi égal au reste de la division polynomiale de M(X) (auquel on a préalablement concatèné n bits nuls correspondant à la longueur du CRC) par G(X).

Le plus simple est encore de prendre un exemple : prenons le message M de 16 bits suivant : 1011 0001 0010 1010 (noté B1 en hexadécimal). Prenons G(X) = X3 + 1 (représenté en binaire par 1001). Etant donné que G(X) est de degré 3, il s'agit d'ajouter 4 bits nuls à M : 10110001001010100000 Le CRC est égal au reste de la division de M par G :


10110001001010100000
1001...,..,.,.,.....
----...,..,.,.,.....
0100..,..,.,.,.....
0000..,..,.,.,.....
----..,..,.,.,.....
1000.,..,.,.,.....
0000.,..,.,.,.....
----.,..,.,.,.....
1000.,..,.,.,.....
1001,..,.,.,.....
----,..,.,.,.....
1111..,.,.,.....
1001..,.,.,.....
----..,.,.,.....
1100.,.,.,.....
1001.,.,.,.....
----.,.,.,.....
1101,.,.,.....
1001,.,.,.....
----,.,.,.....
1000.,.,.....
0000.,.,.....
----.,.,.....
10001,.....
1001,.,.....
----,.,.....
10000.,.....
1001.,.....
----
1111,.....
1001,.....
----,.....
1100.....
1001.....
----.....
1100....
1001....
----....
1010...
1001...
----...
0110..
0000..
----..
1100.
1001.
----.
1010
1001
----
0011

Pour créer M' il suffit de concaténer le CRC ainsi obtenu aux bits de la trame à transmettre :
M' = 1011000100101010 + 0011
M' = 10110001001010100011

Ainsi, si le destinataire du message effectue la division de M' par G, il obtiendra un reste nul si la transmission s'est effectuée sans erreur :
10110001001010100011
1001...,..,.,.,...,,
----...,..,.,.,...,,
0100..,..,.,.,...,,
0000..,..,.,.,...,,
----..,..,.,.,...,,
1000.,..,.,.,.....
1001.,..,.,.,.....
----.,..,.,.,.....
0010,..,.,.,.....
0000,..,.,.,.....
----,..,.,.,.....
0101..,.,.,.....
0000..,.,.,.....
----..,.,.,.....
1010.,.,.,.....
1001.,.,.,.....
----.,.,.,.....
0110,.,.,.....
0000,.,.,.....
----,.,.,.....
1101.,.,.....
1001.,.,.....
----.,.,.....
1010,.,.....
1001,.,.....
----,.,.....
0111.,.....
0000.,.....
----
1110,.....
1001,.....
----,.....
1111.....
1001.....
----.....
1100....
1001....
----....
1010...
1001...
----...
0110..
0000..
----,,
1101,
1001,
----,
1001
1001
----
0

Polynômes générateurs



Les polynômes générateurs les plus couramment employés sont :

CRC-12 : X12 + X11 + X3 + X2 + X + 1
CRC-16 : X16 + X15 + X2 + 1
CRC CCITT V41 : X16 + X12 + X5 + 1
Ce code est notamment utilisé dans la procédure HDLC
CRC-32 (Ethernet): = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
CRC ARPA: X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1

Ce document intitulé «Contrôle des erreurs de transmission» issu de CommentCaMarche.net est soumis à la licence GNU FDL. Vous pouvez copier, modifier des copies de cette page tant que cette note apparaît clairement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jassomo.club.fr/index.htm
kookai123
Soldat


Nombre de messages : 5
Date d'inscription : 31/01/2005

MessageSujet: Re: Présentation du binaire !   Mar 1 Fév à 0:01

Bon Bill gates t'arrete Laughing .
C'est mon premier message vous m'avez reconnu ? lol
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.is98.org
Jarod
Rang: Administrateur


Nombre de messages : 394
Date d'inscription : 16/01/2005

MessageSujet: Re: Présentation du binaire !   Mer 2 Fév à 15:01

ouai !! bienvenue kookai !!! sinon merci momo !! tres complet et tres interessant tout ça !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Présentation du binaire !   Aujourd'hui à 9:42

Revenir en haut Aller en bas
 
Présentation du binaire !
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Convertisseur Binaire
» Présentation de moi =)
» Présentation de ACR38
» Présentation d'aspirine
» Présentation de Salim

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
le forum de tous vos problèmes informatique :: Forum principal :: Hardware-
Sauter vers: