TP 2 : Codage de l'information



  1. Introduction

  2. La base 2 (binaire) , la base 10 (décimal)

  3. Codage des caractères

  4. La base 16 (héxadécimale)

  5. Codage des couleurs


Introduction

Voici un fichier texte vu par l'utilisateur :

TP2_NSI_1.png

A l'aide d'un terminal, on peut savoir comment le fichier est "perçu" par la machine :

TP2_NSI_2.png

TP2_NSI_2.png


La base 2 (binaire) , la base 10 (décimal


Pourquoi les ordinateurs travaillent avec des 0 et des 1 ?

011101011010011101010011100011000111101111111000001010101111010001110111001110101101001110101001110001100011110111111100000101010111101000111011100111010110100111010100111000110001111011111110000010101011110100011101110

LA BASE 10 : Numérotation décimale

Nous représentons les valeurs entières dans le système décimal, on dit aussi en base 10. Nous utilisons les dix chiffres de 0 à 9. Par exemple, 542 est compris comme

542 = 5 x 100 + 4 x 10 + 2

LA BASE 2 : Numérotation binaire

- Capacite d'un nombre (Lien)

L'information numérique, qu'il s'agisse de valeurs entière nombres, de textes, d'images, ou de sons est représentée par des suites de 0 et de 1. On parle de bit : un bit (BInary digiT : chiffre binaire) ) peut prendre deux valeurs, 0 ou 1.

1 byte = 1 octet = 8 bits

- Méthode : Conversion binaire vers décimale.


Donnez les valeurs entières représentées par 0b0100, 0b10101, 0b101 et 0b11111.

Quel est le plus grand entier que l'on puisse obtenir avec un octet ?

Quel est le plus grand entier que l'on puisse obtenir avec deux octets ?

Quelle est la représentation binaire de 14 et 78 ?

Méthode : Conversion décimale vers binaire

C'est assez long puisqu'il faut faire des divisions successives par 2

décimal vers binaire

Mais une méthode plus simple consiste à écrire les puissances de 2 successives jusqu'à dépasser la valeur à convertir.

Commencer alors par le bit de poids le plus fort (à gauche). Peut-on le soustraire ? Si oui, activer le bit et continuez de la même manière avec le reste.

Les bits cochés correspondent à des 1, les non cochés à des zéros

Le tableau ci-dessous permet de faire la conversion décimal vers binaire d'un octet.

2726252423222120 Valeur décimale
1286432168421
0 1 1 0 1 1 0 0 108
Source : https://curie-vire.pagesperso-orange.fr

Quelle est la représentation binaire de 123 ?

Quelle est la représentation binaire de 65 ?



Quelle est la représentation binaire de 2048 ?

Quelle est la représentation binaire de 2019 ?

QUIZZ - TESTEZ VOTRE MAITRISE DU BINAIRE

QUIZZ NON FAIT !




Codage des caractères

Nous savons qu'un ordinateur est uniquement capable de traiter des données binaires, comment sont donc codés les textes dans un ordinateur ? Ou plus précisément, comment sont codés les caractères dans un ordinateur ?

ASCII

Avant 1960 de nombreux systèmes de codage de caractères existaient, ils étaient souvent incompatibles entre eux. En 1960, l'organisation internationale de normalisation (ISO) décide de mettre un peu d'ordre dans ce bazar en créant la norme ASCII (American Standard Code for Information Interchange). À chaque caractère est associé un nombre binaire sur 8 bits (1 octet). En faite, seuls 7 bits sont utilisés pour coder un caractère, le 8e bit n'est pas utilisé pour le codage des caractères. Avec 7 bits il est possible de coder jusqu'à 128 caractères ce qui est largement suffisant pour un texte écrit en langue anglaise (pas d'accents et autres lettres particulières).

Comme vous pouvez le constater dans le tableau ci-dessus, au "A" majuscule correspond le code binaire (1000001)2 ((65)10 ou (41)16)

Quel est le code binaire du "a" minuscule en ASCII?


Quelques soucis avec l'encodage Ascii :

Test 1 (ASCII)

Test 2 (ISO-8859-1 ou Latin1)

Test 3 (UTF-8 ou Unicode)


Repérer les différence entre les codes sources.


ISO-8859-1

La norme ASCII convient bien à la langue anglaise, mais pose des problèmes dans d'autres langues, par exemple le français. En effet l'ASCII ne prévoit pas d'encoder les lettres accentuées. C'est pour répondre à ce problème qu'est née la norme ISO-8859-1. Cette norme reprend les mêmes principes que l'ASCII, mais les nombres binaires associés à chaque caractère sont codés sur 8 bits, ce qui permet d'encoder jusqu'à 256 caractères. Cette norme va être principalement utilisée dans les pays européens puisqu'elle permet d'encoder les caractères utilisés dans les principales langues européennes (la norme ISO-8859-1 est aussi appelée "latin1" car elle permet d'encoder les caractères de l'alphabet dit "latin")

Problème, il existe beaucoup d'autres langues dans le monde qui n'utilisent pas l'alphabet dit "latin", par exemple le chinois ou le japonnais ! D'autres normes ont donc dû voir le jour, par exemple la norme "GB2312" pour le chinois simplifié ou encore la norme "JIS_X_0208" pour le japonais.

Cette multiplication des normes a très rapidement posé problème. Imaginons un français qui parle le japonais. Son traitement de texte est configuré pour reconnaitre les caractères de l'alphabet "latin" (norme ISO-8859-1). Un ami japonais lui envoie un fichier texte écrit en japonais. Le français devra modifier la configuration de son traitement afin que ce dernier puisse afficher correctement l'alphabet japonais. S'il n'effectue pas ce changement de configuration, il verra s'afficher des caractères ésotériques.

Unicode

Pour éviter ce genre de problème, en 1991 une nouvelle norme a vu le jour : Unicode

Unicode a pour ambition de rassembler tous les caractères existant afin qu'une personne utilisant Unicode puisse, sans changer la configuration de son traitement de texte, à la fois lire des textes en français ou en japonais

Unicode est uniquement une table qui regroupe tous les caractères existant au monde, il ne s'occupe pas de la façon dont les caractères sont codés dans la machine. Unicode accepte plusieurs systèmes de codage : UTF-8, UTF-16, UTF-32. Le plus utilisé, notamment sur le Web, est UTF-8.

Pour encoder les caractères Unicode, UTF-8 utilise un nombre variable d'octets : les caractères "classiques" (les plus couramment utilisés) sont codés sur un octet, alors que des caractères "moins classiques" sont codés sur un nombre d'octets plus important (jusqu'à 4 octets). Un des avantages d'UTF-8 c'est qu'il est totalement compatible avec la norme ASCII : Les caractères Unicode codés avec UTF-8 ont exactement le même code que les mêmes caractères en ASCII.

Avec Python

for i in range(64,127):
    print(chr(i))

for i in range(15000,16000):
    print(chr(i))

TP2_NSI_2.png

- Quel est la taille du fichier test.txt ?
- Justifier le codage binaire entouré :




Base 16 (Héxadécimale)

TP2_NSI_4.png

Le terminal affiche le binaire de manière plus condensé cela nous évite de devoir lire de longues enfilades de 0 et de 1

Méthode : Conversion hexadécimale vers décimale

En base 2 (Binaire) , on utilise 2 symboles : 0 et 1
En base 10 (Décimale) on utilise 10 symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
En base 16 (Héxadcimale) on utilise 16 symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Exemple : (3F7A)16=3 x 163 + 15 x 162 + 7 x 161 + 10 x 160 = 15 x 256 + 7 x 16 + 10 x 1 = 16250

Méthode : Conversion hexadécimale vers décimale

Exemple conversion hexadécimale -> décimale :

4516=4 x 161+5=69

A416=10 x 161+4=164

1- Convertir F5A16 en décimale.
2- Convertir 2019 en héxadécimale.

Compléter le tableau ci-dessous :
Base 16 : héxadécimale Base 10 : décimale Base 2 : binaire
0 0 0000
1 1 0001
2 2 0010
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15

1- Convertir en décimale puis en binaire.

AB16 =

FF16 =

2- Convertir 111100112 en héxadécimale.

3- Proposer une méthode pour passer plus directement de l'hexadécimale en binaire.

Compléter le tableau ci-dessous :
Base 10 : décimale Base 2 : binaire Base 16 : hexadécimale
12
12
10010110
FADE

TP2_NSI_4.png

Justifier le code hexadécimal entouré.

QUIZZ - TESTEZ VOTRE MAITRISE DE L'HEXADECIMAL

QUIZZ NON FAIT




Codage des couleurs

Le Codage R G B des couleurs



<body style="background-color:black;">

<p style="color:red;">
Un paragraphe en rouge</p>

<p style="color:rgb(255,0,255);">
Un paragraphe en violet</p>

<p style="color:#0000FF;">
Un paragraphe en bleu</p>



</body>



Cliquer ici pour voir le rendu du fichier html ci-dessus.


Une couleur peut s'exprimer de trois façons :
  1. par son nom (color:yellow; color:red; color:black; etc),
  2. par sa notation décimale (rgb(255,255,0)).
  3. par son triplet RGB en utilisant la notation hexadécimale (#FFFF00)

Une couleur est composée de trois composantes. Rouge , verte et bleue .
L'intensité de chaque composante est codée sur un octet.


1 octet = 8 bits



Une composante est codée avec 1 octet, en déduire la valeur maximale d'une composante. (On donnera une réponse en décimale et en hexadecimale)

Quelle est la couleur de rgb(255,255,0) ? Vérifier

Quelle est la couleur de #00FFFF ? Vérifier

Quelle est la couleur de #FFFFFF ? Vérifier

Ecrire les couleurs du drapeau français en notation décimale. Vérifier

Combien de couleur peut-on avoir avec le système RGB ?

Changer la couleur de fond (backgroud) de cette page. ( Aide )