info:gene:repdonnees

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
info:gene:repdonnees [2023/10/19 15:07] – [3. Encodage des entiers relatifs (complément à 2)] philinfo:gene:repdonnees [2024/08/19 09:12] (Version actuelle) – [Représentation des données] phil
Ligne 1: Ligne 1:
 [[info:accueilinfo|{{ :iconemaison.jpg?nolink&25|Sommaire "Bases d'algorithmique et de programmation"}}]]   [[info:accueilinfo|{{ :iconemaison.jpg?nolink&25|Sommaire "Bases d'algorithmique et de programmation"}}]]  
  
-===== Représentation des données ===== +===== Représentation des données en machine ===== 
-[Mise à jour le 19/10/2023]+[Mise à jour le 19/8/2024]
  
  
Ligne 11: Ligne 11:
   * Complément à 2 (<html><a href="https://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux" target="_blank">Wikipédia</a></html>)   * 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>   * Editeur hexadécimal en ligne : <html><a href="https://hexed.it/" target="_blank">HexEdit</a></html>
 +
 +\\
 +
  
 ==== 1. Introduction ==== ==== 1. Introduction ====
Ligne 20: Ligne 23:
  
 <callout type="primary" icon="true">Il est nécessaire d'utiliser des codes (**encoder**) pour représenter des **entiers**, des **décimaux** et des **caractères**. </callout> <callout type="primary" icon="true">Il est nécessaire d'utiliser des codes (**encoder**) pour représenter des **entiers**, des **décimaux** et des **caractères**. </callout>
 +
 +\\
 +
  
 ==== 2. Encodage des entiers naturels ==== ==== 2. Encodage des entiers naturels ====
Ligne 34: Ligne 40:
 - Un octet (n = 8) permet de coder tous les nombres entre 0 et 255 \\ - Un octet (n = 8) permet de coder tous les nombres entre 0 et 255 \\
 - 10011011<sub>2</sub> = 1*2<sup>7</sup> + 0*2<sup>6</sup> + 0*2<sup>5</sup> + 1*2<sup>4</sup> + 1*2<sup>3</sup> + 0*2<sup>2</sup> + 1*2<sup>1</sup> + 1*2<sup>0</sup> = 128 + 16 + 8 + 2 + 1 = 155<sub>10</sub> - 10011011<sub>2</sub> = 1*2<sup>7</sup> + 0*2<sup>6</sup> + 0*2<sup>5</sup> + 1*2<sup>4</sup> + 1*2<sup>3</sup> + 0*2<sup>2</sup> + 1*2<sup>1</sup> + 1*2<sup>0</sup> = 128 + 16 + 8 + 2 + 1 = 155<sub>10</sub>
 +
 +\\
  
 === 2.2 Écriture en base 16 === === 2.2 Écriture en base 16 ===
Ligne 42: Ligne 50:
 // Exemple// // Exemple//
 1001 1110 0111 0101<sub>2</sub> = 9E75<sub>16</sub> 1001 1110 0111 0101<sub>2</sub> = 9E75<sub>16</sub>
 +
 +\\
 +
 === 2.3 Boutisme === === 2.3 Boutisme ===
 **Sources**  **Sources** 
Ligne 59: Ligne 70:
  
 {{ :python:python.png?nolink&50|}} {{ :python:python.png?nolink&50|}}
 +
 +\\
 +
 === 2.4 Bases 2,10 et 16 en Python === === 2.4 Bases 2,10 et 16 en Python ===
 Voir [[python:bases:variables|Variables, types numériques et entrées / sorties dans la console]] Voir [[python:bases:variables|Variables, types numériques et entrées / sorties dans la console]]
 +
 +\\
 +
 ==== 3. Encodage des entiers relatifs (complément à 2) ==== ==== 3. Encodage des entiers relatifs (complément à 2) ====
 {{ :info:gene:maxresdefault.jpg?nolink&350|}} {{ :info:gene:maxresdefault.jpg?nolink&350|}}
Ligne 95: Ligne 112:
   * Les **nombres négatifs** sont obtenus en calculant l'opposé du nombre positif par deux opérations successives:   * 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 **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 ».</callout>+    * 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> 
 + 
 +\\ 
  
 ==== 4. Représentation approximative des nombres réels ==== ==== 4. Représentation approximative des nombres réels ====
Ligne 180: Ligne 203:
  
 N<sub>10</sub> = 1 + (2<sup>-1</sup> + 2<sup>-4</sup> + 2<sup>-5</sup> + 2<sup>-8</sup> + 2<sup>-9</sup> + 2<sup>-12</sup> + 2<sup>-13</sup> + 2<sup>-16</sup> + 2<sup>-17</sup> + 2<sup>-20</sup> + 2<sup>-21</sup> + 2<sup>-23</sup>) x + 2<sup>127-127</sup> = 1,60000002384185791015625 N<sub>10</sub> = 1 + (2<sup>-1</sup> + 2<sup>-4</sup> + 2<sup>-5</sup> + 2<sup>-8</sup> + 2<sup>-9</sup> + 2<sup>-12</sup> + 2<sup>-13</sup> + 2<sup>-16</sup> + 2<sup>-17</sup> + 2<sup>-20</sup> + 2<sup>-21</sup> + 2<sup>-23</sup>) x + 2<sup>127-127</sup> = 1,60000002384185791015625
 +
 +\\
  
 {{ :python:python.png?nolink&50|}} {{ :python:python.png?nolink&50|}}
 === 4.3 Les flottants en Python === === 4.3 Les flottants en Python ===
 Voir [[python:bases:variables|Variables, types numériques et entrées / sorties dans la console]] Voir [[python:bases:variables|Variables, types numériques et entrées / sorties dans la console]]
 +
 +\\
  
 ==== 5. Représentation des caractères ==== ==== 5. Représentation des caractères ====
Ligne 204: Ligne 231:
 <callout type="primary" icon="true">De nombreux autres encodages ont été proposés et utilisés pour résoudre ces problèmes. Le code qui a fini par s'imposer au niveau international est le code **UTF-8** (**U**nicode **T**ransformation **F**ormat).</callout> <callout type="primary" icon="true">De nombreux autres encodages ont été proposés et utilisés pour résoudre ces problèmes. Le code qui a fini par s'imposer au niveau international est le code **UTF-8** (**U**nicode **T**ransformation **F**ormat).</callout>
  
-=== 5.ISO 8859 ===+=== 5.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   * **Ressource** : <html><a href="https://fr.wikipedia.org/wiki/ISO/CEI_8859-1" target="_blank">ISO-8859-1</a></html> sur Wikipédia
  
Ligne 260: Ligne 287:
  
 A compléter A compléter
 +
 +\\
  
 {{ :python:python.png?nolink&50|}} {{ :python:python.png?nolink&50|}}
 === 5.4 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 ==== ==== 6. Pour aller plus loin ====
  • info/gene/repdonnees.1697720824.txt.gz
  • Dernière modification : 2023/10/19 15:07
  • de phil