Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
info:gene:repdonnees [2022/10/05 19:10] – phil | info:gene:repdonnees [2023/10/19 15:13] (Version actuelle) – [3. Encodage des entiers relatifs (complément à 2)] phil |
---|
| |
===== Représentation des données ===== | ===== Représentation des données ===== |
[Mise à jour le 5/10/2022] | [Mise à jour le 19/10/2023] |
| |
| |
**Sources** | **Sources** |
* Numérique et sciences informatiques 1<sup>er</sup> - ellipses | * Numérique et sciences informatiques 1<sup>er</sup> - ellipses |
| |
| **Ressources** |
| * Complément à 2 (<html><a href="https://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux" target="_blank">Wikipédia</a></html>) |
| * Editeur hexadécimal en ligne : <html><a href="https://hexed.it/" target="_blank">HexEdit</a></html> |
| |
==== 1. Introduction ==== | ==== 1. Introduction ==== |
| |
//Vérification// : pour n = 18, N<sub>10</sub> ∈ [-2<sup>17</sup>, 2<sup>17</sup>-1] soit **-131072 ≤ N<sub>10</sub> ≤ 131071** | //Vérification// : pour n = 18, N<sub>10</sub> ∈ [-2<sup>17</sup>, 2<sup>17</sup>-1] soit **-131072 ≤ N<sub>10</sub> ≤ 131071** |
| |
| |
| <callout type="primary" icon="true">**Méthode** |
| * Les nombres positifs sont représentés de manière usuelle. |
| * Les **nombres négatifs** sont obtenus en calculant l'opposé du nombre positif par deux opérations successives: |
| * On **inverse les bits de l'écriture binaire** (opération binaire NON), on fait ce qu'on appelle le complément à un ; |
| * On **ajoute 1** au résultat (**les dépassements sont ignorés**). \\ Cette opération correspond au calcul de **2<sup>n</sup> − |x|**, où n est la longueur de la représentation et |x| la valeur absolue du nombre à coder. \\ Ainsi, −1 s'écrit comme 256−1 = 255 = 11111111<sub>2</sub>, pour les nombres sur 8 bits. Ceci est à l'origine du nom de cette opération : « complément à 2 puissance n », quasi-systématiquement tronqué en « complément à 2 ». |
| |
| La même opération effectuée sur un nombre négatif donne le nombre positif de départ: **2<sup>n</sup> − (2<sup>n</sup> − x) = x**. |
| </callout> |
| |
| |
| |
=== 5.1 ISO 8859 === | === 5.1 ISO 8859 === |
| * **Ressource** : <html><a href="https://fr.wikipedia.org/wiki/ISO/CEI_8859-1" target="_blank">ISO-8859-1</a></html> sur Wikipédia |
| |
A compléter | A compléter |
| |
<callout type="tip" icon="true">Chaque caractère a un code unique, appelé "//code point//" ou **point de code** et noté **U+XXXX** où chaque X est un caractère hexadécimal. En pratique la séquence de X est au minimum de 4 caractères.</callout> | <callout type="tip" icon="true">Chaque caractère a un code unique, appelé "//code point//" ou **point de code** et noté **U+XXXX** où chaque X est un caractère hexadécimal. En pratique la séquence de X est au minimum de 4 caractères.</callout> |
| |
Cette norme définit plusieurs techniques d'encodage pour représenter les points de code de manière plus ou moins économique selon la technique choisie. Ces encodages, appelés //formats de transformation universelle// ou //**U**niversal **T**ransformation **F**ormat// (**UTF**) en anglais, portent les noms **UTF-n**, où //n// indique le nombre minimal de //bits// pour représenter un point de code. | Cette norme définit plusieurs techniques d'encodage pour représenter les points de code de manière plus ou moins économique selon la technique choisie. Ces encodages, appelés //formats de transformation universelle// ou //**U**niversal **T**ransformation **F**ormat// (**UTF**) en anglais, portent les noms **UTF-n**, où //n// indique le nombre minimal de //bits// pour représenter un point de code. \\ \\ |
| |
{{ :info:gene:utf8.png?nolink&100|}} | {{ :info:gene:utf8.png?nolink&100|}} |
| U+004B | 01001011 | 01001011 (4b) | | | U+004B | 01001011 | 01001011 (4b) | |
| U+00C5 | 11000101 | 11000011 (C3) 10000101 (85) | | | U+00C5 | 11000101 | 11000011 (C3) 10000101 (85) | |
| U+0A9C | 00001010 10011100 | 11100000 (E0) 10101010 (AA) 10011100 (9C) | | | U+0A9C | 00001010 10011100 | 11100000 (E0) 10101010 (AA) 10011100 (9C) | \\ \\ |
| |
== 5.3.2 UTF16 == | == 5.3.2 UTF16 == |
A compléter | Voir <html><a href="https://fr.wikipedia.org/wiki/Unicode" target="_blank">Unicode</a></html> sur Wikipédia. \\ \\ |
| |
== 5.3.3 UTF-32 == | == 5.3.3 UTF-32 == |
A compléter | Voir <html><a href="https://fr.wikipedia.org/wiki/Unicode" target="_blank">Unicode</a></html> sur Wikipédia. \\ \\ |
| |
== 5.3.4 UNICODE et Python == | == 5.3.4 UNICODE et Python == |
| {{ :python:python.png?nolink&50|}} |
| |
| <callout type="primary" icon="true">Les chaînes de caractères en Python sont des séquences de caractères au format **UTF-8**. Ces caractères peuvent être saisi directement avec leur point de code à l'aide d'une séquence d'échapement '\u' suivie du point de code en hexadécimal.</callout> |
| |
| //Exemple// |
| <code python *.py> |
| a = '\u0042' |
| print(a) # Affichage du caractère A |
| </code> |
| |
A compléter | A compléter |
| |
{{ :python:python.png?nolink&50|}} | {{ :python:python.png?nolink&50|}} |
=== 5.5 Les chaînes de caractères en Python === | === 5.4 Les chaînes de caractères en Python === |
Voir [[python:bases:chaines|Les séquences : chaînes de caractères]] | Voir [[python:bases:chaines|Les séquences : chaînes de caractères]] |
| |
| ==== 6. Pour aller plus loin ==== |
| **Real Python** - <html><a href="https://realpython.com/python-encodings-guide/" target="_blank">Unicode & Character Encodings in Python: A Painless Guide</a></html> |
| |
---- | ---- |