Info 1, Cours 2 Plan : - Codage hexadécimal - Encodage du texte - Quelques mots sur la saisie au clavier Bibliographie : www.wikipedia.org Système hexadécimal Codage naturel de nombres : binaire (naturel, car compris par l électronique) Décimal Binaire Décimal Binaire 0 0 8 1000 1 1 9 1001 2 10 10 1010 3 11 11 1011 4 100 12 1100 5 101 13 1101 6 110 14 1110 7 111 15 1111
Système hexadécimal Codage naturel de nombres : binaire (naturel, car compris par l électronique) Décimal Binaire Hexadéci mal Décimal Binaire Hexadéci mal 0 0 0 8 1000 8 1 1 1 9 1001 9 2 10 2 10 1010 A 3 11 3 11 1011 B 4 100 4 12 1100 C 5 101 5 13 1101 D 6 110 6 14 1110 E 7 111 7 15 1111 F Système hexadécimal Très pratique pour écrire les codes informatiques : 1 octet = 8 bits. Les deux fois 4 bits sont codés par deux chiffres héxadécimaux Ex. : 1111 0000 b = 0xF0 1101 0011 b = 0xD3 1010 1001 b =?? = 0xA8 C est quoi LSB et MSB?
Encodage de caractères (character encoding) Objectif : traduire les symboles graphique vers la représentation binaire Exemple : a=0000, b=0001, c=0010, etc En réalité, il y a plus de caractères que ceux d alphabet (a-z et A-Z). Ponctuation!,; mathématiques +-*/=, typographie, commerciaux $ ASCII table : Le premier jeu de caractères standard Chaque caractère est codé sur 7 bits Seulement les caractères latins de base Englais : OK, français : KO, langues à alfabet cyrillic (serbe/russe/bulgare...) : une catastrophe chinois : n y pensons même pas...
ASCII table : 128 symboles Table ASCII étendu On stoque un code ASCII dans un octet mais dans un octet on peut stoquer 256 codes différents! Donc, on élargie la table ASCII à 256. Les premier 128 codes sont ceux de ASCII de base 0x00-0x7F Les autres : les caractères manquants, 0x80-0xFF
ASCII élargie : Latin-1 ASCII élargie : Cyrillic
Mais que faire si l on souhaite mélanger dans un même document : du russe, du français, et, pour finir, du chinois? Il faut changer le système Solution : séparer les taches - Identifier tous les symboles existants, possibles et imaginables - avec les variantes calligraphiques etc, linguistiques, typographiques, musicaux - Attribuer un numéro à chaque symbole - Prévoir de la réserve pour des symboles qui ne sont pas encore connus (des langues que l on n a pas encore découvertes ou à écriture pas encore inventée ) - Faire de cette table (base de donnée) un standard - Laisser les applications gérer l encodage au niveau «!ordinateur!»
Unicode : standard industriel Unicode est une norme informatique, développée par le Consortium Unicode, qui vise à donner à tout caractère de n'importe quel système d"écriture de langue un nom et un identifiant numérique, et ce de manière unifiée, quelle que soit la plate-forme informatique ou le logiciel. Cette base de donnée s appelle «!Universal Character Set!» et contient près d un million de caractères avec, pour chacun, un code et une description. Ex. : pour la symbole æ, U+0x00E6, «!latin small letter AE!» Plans UNICODE La table Unicode peut être divisé en 17 parties (plans), chacune contenant 65 536 codes (code points). En pratique peu de parties sont utilisées Plan 0 (0000 FFFF): Basic Multilingual Plane (BMP). Ce plan contient la plupart des caractères «!connu!» et «!largement utilisés!». Le but de la BMP est de permettre une unification des caractères et jeux de caractères futurs et les jeux de caractères pour les systèmes d"écruture utilisés actuellement. Plane 1 (10000 1FFFF): Supplementary Multilingual Plane (SMP). Plane 2 (20000 2FFFF): Supplementary Ideographic Plane (SIP) Planes 3 to 13 (30000 DFFFF) non attribués Plane 14 (E0000 EFFFF): Supplementary Special-purpose Plane (SSP) Plane 15 (F0000 FFFFF) reserved for the Private Use Area (PUA) Plane 16 (100000 10FFFF), reserved for the Private Use Area (PUA) How many unassigned codes contain the planes 3 to 13?
Basic Multilingual Plane Unicode est une base de données de caractères - un répertoire Il répertorie (numérote) 17!!2 16 ~ 1 million (1,114,112) symboles. Quid du codage niveau ordinateur? Première possibilité (naturelle) : chaque symbole est codé par son numéro unicode. Mauvaise solution : il faut prévoir une possibilité pour coder 17!!2 16 caractères Combien il faut de bits? (on calcule )
Unicode est une base de données de caractères - un répertoire Il répertorie (numérote) 17!!2 16 ~ 1 million (1,114,112) symboles. Quid du codage binaire? En réalité : La plupart de fichiers texte français utilisent les caractères latines simples codées en ASCII (0-127) sur 7 bits. D autres, utilisent les caractères cyrilliques et diacritiques appartenant à la BMP : entre 128 et 2 16 (codé sur 16 bits). Le reste, c est anecdotique Unicode est une base de données de caractères - un répertoire Il répertorie (numérote) 17!!2 16 ~ 1 million (1,114,112) symboles. Quid du codage binaire? Deuxième possibilité : on introduit un codage qui s adapte au contexte : encodage à longueur variable. On découpe notre plan UNICODE en quatres zones (codage UTF-8)
Codage UTF-8 : principe Chaque caractère est codé avec entre 1 et 4 octets. 1. Un octet est nécessaire pour coder un caractère ASCII (0 à 128, ou 0 à 0x7F ) 2. Deux octets sont nécessaire pour encoder les caractères latins avec des diacritiques et les caractères appartenant aux alphabets Grèque, Cyrillique, Armenien, Hebreux, Arabe, Syrien et Thaana (numéros Unicode 0080 à 07FF). 3. Trois octets sont nécessaire pour encoder le reste de la BMP (Basic Multilinguial Plane) 4. Quatre pour les autres caractères Unicode, qui sont rarement utilisés. Mécanisme de transcription des codes Unicode en codes binaire En résumé, le codes les plus courts sont utilisés pour stoquer les caractères les plus «!fréquents!» (latin - occidentaux!)
Numéros Unicode des 256 premiers caractères : ACSII et Latin 1 Numéros Unicode des caractères cyrillique : N en haut + N à gauche
Petite exercice: on encodera en Unicode le mot bé! b : ASCII standard, donc, b= U+0x62=U+ 0110 0010 b é : ASCII élargi, latin 1 : é= U+0xE9=U+ 1110 1001 b! : Cyrillic, donc,!= U+0x0444=U+0000 0100 0100 0100 b b est codé par 1 octet, tel quel : 0110 0010 b é est codé sur deux octets : 110x xxxx 10xx xxxx, à la place des 11 x on doit mettre les 11 bits du numéro Unicode de é: 000 1110 1001 On obtient pour é : 1100 0011 1010 1001 b =0x C3A9! est codé sur deux octets : 110x xxxx 10xx xxxx, à la place des 11 x on doit mettre les 11 bits du numéro Unicode de! : 100 0100 0100 b On obtient pour!: 1101 0001 1000 0100 b = 0xD184 Bien saisir sur le clavier (AZERTY) : chaque doigt reste dans sa zone 5 4 3 2 2 3 4 5 Dactylographie : très important!!! Deux principes : 1) La position du repos des doigts (qsdf et jklm), les pouces sur «!Espace!», les indexes sur f et j (les touches balisées) 2 ) Chaque doigt a une «!zone d influence!», et après chaque mouvement retrouve la position du repos
Position de repos des doigts