Département Informatique Codage de l’information Laurent JEANPIERRE IUT de CAEN – Campus 3
Département Informatique2 Contenu du cours Définition Les entiers Les caractères Les codes détecteurs d’erreurs Les nombres à virgule
Département Informatique3 Définition Code : Système conventionnel de signes ou de signaux, de règles et de lois, permettant la transformation d'un message en vue d'une utilisation particulière. Exemples : Code de la route, Code postal,...
Département Informatique4 Définitions (suite) Codage : le fait de coder Coder : écrire dans un code Transcodage : opération consistant à transcrire un code dans un autre Exemples : nombres arabes nombres romains ASCII Unicode
Département Informatique5 Contenu du cours Définition Les entiers Les caractères Les codes détecteurs d’erreurs Les nombres à virgule
Département Informatique6 Le code de Gray Ou encore « code binaire réfléchi » Utilisation : Visualisation d’informations dynamiques Conversion de grandeurs analogiques … Avantage : Élimine les erreurs de transitions
Département Informatique7 Code de Gray : exemple BinaireBinaire ABCDEF XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX GRAYGRAY ABCDEF XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
Application © Département Informatique8
9 Le code BCD Binary Coded Decimal, ou décimal codé en binaire : 1 chiffre décimal 4 bits. Exemple : = BCD Avantages : Simplicité du binaire Lisibilité du décimal (pour l’homme !) Inconvénient : Les calculs nécessitent des corrections
Département Informatique10 Contenu du cours Définition Les entiers Les caractères Les codes détecteurs d’erreurs Les nombres à virgule
Département Informatique11 Les caractères Ordinateur 0/1 Caractères code numérique Sous Linux : recode -l : affiche les codes disponibles Exemple : ‘A’ ASCII : 65 (8 bits) EBCDIC : 193 (8 bits) Unicode : 65 (16 bits)
Département Informatique12 EBCDIC Extended Binary Coded Decimal Interchange Code sur 8 bits, parfois 9 (avec parité) Utilisé par IBM principalement.
Département Informatique13 ASCII American Standard Code for Information Interchange Code 7 bits, pas d’accents Plusieurs « pages de codes » sur le reste
Département Informatique14 Nouveaux codes Pages de codes ingérables, trop nombreuses (190 + codes multi octets) Années 90 UNIversal CODE : UNICODE (16 bits) ISO/IEC : 32 bits
Département Informatique15 Contenu du cours Définition Les entiers Les caractères Les codes détecteurs d’erreurs Les nombres à virgule
Département Informatique16 Pourquoi contrôler les erreurs ? Un ordinateur ne cesse de transférer des données : vers la mémoire, le disque, un périphérique, un autre ordinateur. Chaque transfert peut altérer les données. Spécialement en analogique. Il faut donc être capable de détecter ces erreurs, voire de les corriger…
Département Informatique17 Contrôle de parité Soit un code sur n bits On ajoute 1 bit tel que tous les mots du code aient un nombre de bits à 1 : Pair : code à parité paire. Impair : code à parité impaire. On ne peut donc détecter que les erreurs sur un nombre impair de bits.
Exemple Envoi du mot « PAG » + parité impaire : 8 bits à 1 => 1 Département Informatique18 Lettre P A G
Département Informatique19 Codes de blocs Développés par R.W. Hamming Principe général : Séparation en blocs de taille fixe Ajout de bits de redondance à chaque bloc Transmission… Vérification des blocs reçus: Le bloc est un mot du code : Pas d’erreur, on peut extraire le message original Le bloc n’est PAS un mot du code : Il y a eu erreur.
Département Informatique20 Codes de blocs (2) Quand erreur : On peut retrouver le mot original (code auto-correcteur d’erreur) On doit demander la retransmission (code vérificateur d’erreur) Distance de Hamming : Nombre minimal de bits séparant deux mots du code (Code de Gray : 1) Plus elle est grande, plus le code est bon
Département Informatique21 Codes de blocs (3) Exemple : Contrôle de parité verticale (VRC) Contrôle de parité horizontale (LRC) Contrôle de parité croisée LettreVRC Valeur P A G LRC h 41 h 47 h 56 h
Département Informatique22 Codes de redondance cyclique Ou Cyclic Redundancy Check Ou codes polynomiaux Un mot de n bits polynôme de degré n Exemple : 1*X 4 +0*X 3 +1*X 2 +1*X 1 +1*X 0 Principe du codage : Soit le mot I(X) à envoyer et G(X) un polynôme générateur Envoi de M(X) = I(X)+R(X) tel que G(X) divise M(X) A la réception, on vérifie que G(X) divise bien M(X)
Département Informatique23 CRC (2) Il faut donc bien choisir G(X). Exemple : (CRC16 du CCIT) X 16 + X 12 + X Permet de détecter : 100% des erreurs de 1 ou 2 bits 100% des erreurs impaires 100% des paquets de 16 erreurs ou moins 99.99% des paquets de 18 erreurs
Département Informatique24 Contenu du cours Définition Les entiers Les caractères Les codes détecteurs d’erreurs Les nombres à virgule
Département Informatique25 Extension des entiers On a vu que = 1* *2 2 +1*2 1 +1*2 0 = Par extension : 1011,01 2 = 1*2 3 +0*2 2 +1*2 1 +1*2 0 +0* *2 -2 = 1*8 +0*4 +1*2 +1*1 +0/2 +1/4 = 11,25 10
Département Informatique26 Normalisation Comment stocker ce nombre ? Virgule fixe : n,m bits Simple et efficace Expressivité très limitée (-2 n 2 n ) Virgule flottante : 1011,01 2 = *2 -2 = 0, *2 4 stockage de (n bits) et de 100 (m bits) Grande expressivité (-2 2 m -1 2 2 m -1 -1) Grande précision 2 -n+1
Département Informatique27 Stockage Tout nombre peut donc être stocké par N = (-1) S * M * 2 e Notation en virgule flottante normalisée Avec Son signe S Sa mantisse M (bits significatifs) Son exposant e 0 est codé de façon spéciale (pas de bits significatifs)
Département Informatique28 Dans les faits N = (-1) S * M * 2 e 2 > M ≥ 1 (premier bit de M = 1 non exprimé) e non signé (pas de complément à 2) 0 = (-1) S * 0 * 2 0 D’autres nombres : ±∞, NAN
Département Informatique29 Les normes IBM (32 bits) IEEE754 sur 32 / 64 / 80 bits Sur (80 bits) : 3,4* 1,2* Exposant + 127signeMantisse TypeSigneExposantMantisse Simple précision 32 bits bit8 bits, e bits Double précision 64 bits bit11 bits, e bits Précision étendue 80 bits bit15 bits, e bits
Exemple (1/2) float x = ; Département Informatique30 3 = 2+1 = , *2 = 0, , *2 = 0, , *2 = 1, , *2 = 0, , *2 = 0, , *2 = 1, , *2 = 0, , *2 = 0, , *2 = 0, , *2 = 0, , *2 = 1, , *2 = 1, , *2 = 1, , *2 = 1, , *2 = 1, , *2 = 1, , *2 = 0, , *2 = 1, , *2 = 1, , *2 = 0, , *2 = 1, , *2 = 0, , *2 = 1, x == …
Exemple (2/2) x = =+1* *2 1 s = 0 m = e = = 128 = x == 0x40490FDB Département Informatique31