diff --git a/package-lock.json b/package-lock.json index b70c34d..3911d7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": ".marp", + "name": "ciel-b1", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/src/cours/CIEL1/02-reseau/divisions_successives.jpg b/src/cours/CIEL1/02-reseau/divisions_successives.jpg new file mode 100644 index 0000000..3aa9ce1 Binary files /dev/null and b/src/cours/CIEL1/02-reseau/divisions_successives.jpg differ diff --git a/src/cours/CIEL1/02-reseau/numeration.md b/src/cours/CIEL1/02-reseau/numeration.md index 0d80165..ff89d92 100644 --- a/src/cours/CIEL1/02-reseau/numeration.md +++ b/src/cours/CIEL1/02-reseau/numeration.md @@ -1,4 +1,4 @@ -# Codage des entiers naturels +# Représentation des entiers naturels ## Base 10 et généralisation @@ -118,8 +118,8 @@ La première méthode nécessite de connaître les puissances de 2 par coeur. El Procédez de cette manière : 1. Vous pouvez créer un tableau avec les puissances de 2 1. En parcourant votre tableau de gauche à droite (du plus grand au plus petit) - - placez un 0 si le nombre de la colonne est supérieur ou égal à votre nombre - - placez un 1 dans la première colonne dont la valeur est inférieure à votre nombre + - placez un 0 si le nombre de la colonne est strictement supérieur à votre nombre + - placez un 1 dans la première colonne dont la valeur est inférieure ou égale à votre nombre 1. Soustrayez la puissance de 2 à votre nombre et recommencez avec le résultat 1. Procédez comme ça jusqu'à ce que votre tableau soit rempli 1. Votre nombre binaire sera écrit dans les cases de votre tableau @@ -153,7 +153,7 @@ Pour cela il faut effectuer une série de divisions euclidiennes par 2 (c'est à La méthode: 1. Prenez votre nombre, divisez le par 2. Vous obtiendrez un reste de 0 ou 1. Notez le. -2. Divisiez ensuite de nouveau le quotient de votre première division par deux. Notez le reste. +2. Divisez ensuite de nouveau le quotient de votre première division par deux. Notez le reste. 3. Procédez de cette manière jusqu'à avoir un quotient de 0 4. Pour trouver votre nombre binaire, prenez le reste de chacune de vos divisions dans l'ordre **inverse** de vos calculs. Le dernier reste trouvé sera votre bit de poids fort (MSB) et le premier reste calculé votre bit de poids faible (LSB) diff --git a/src/slides/slides.md b/src/slides/slides.md index 0bf0534..924f8dc 100644 --- a/src/slides/slides.md +++ b/src/slides/slides.md @@ -5,7 +5,311 @@ paginate: true size: 4:3 transition: coverflow footer: '' +math: katex +--- +# Représentation des entiers naturels --- -# Titre ---- \ No newline at end of file +- Nombres peuvent avoir des représentations différentes. +- En informatique : + - Décimal (base 10) + - Binaire (base 2) + - Hexadécimal (Base 16) + - Octal (base 8) + +--- + +## Base 10 et généralisation + +--- + +* Succession de symboles qui représentent une valeur : les chiffres +* Système positionnel : la valeur du symbole diffère selon sa position dans le nombre + - Ex: 222 +* Position = **Rang** +* Valeur = **Poids** + +--- + +!!! success Formule +$$ a_n \times 10^n + ... + a_2 \times 10^2 + a_1 \times 10^1 + a_0 \times 10^0 $$ +!!! + +$a_i$ sont les chiffres de rang $i$ + +!!! warning Attention +La plus petite puissance (celle des unités) est de 0 (10⁰ = 1) et non pas de 1 (10¹ = 10) +!!! + +--- + +Si on généralise : + +!!! success Formule à retenir +$$ a_n \times b^n + ... + a_2 \times b^2 + a_1 \times b^1 + a_0 \times b^0 $$ +!!! + +--- + +- Les $a_i$ diffèrent selon les bases : + - en base 10 : chiffres de 0 à 9 + - en base 2 : chiffres de 0 à 1 + - en base 16 : 0 à F + - lettres pour les "chiffres" au delà de 9 + +--- + +Par exemple : +* $48_{|10}$ : $4\times10^1+8\times10^0$ +* $56_{|16}$ : $5\times16^1+6\times16^0$ +* $1011_{|2}$ : $1\times2^3+0\times2^2+1\times2^1+1\times2^0$ + +--- + +Exercice : Découper selon la formule +- $345_{|10}$ +- $\mathrm{6A}_{|16}$ +- $1101_{|2}$ +--- + +## La base 2, système binaire + +--- + +* Très utilisé en informatique, réseau, électronique numérique... +* Chaque poids = puissance de 2 +* On utilisera 0 et 1 : des **bits** +* Paquets de 8 bits : **octets** +* Exemple : + $$11_{|2} = 1\times2^1+1\times2^0 = 3_{|10}$$ + +--- + +Exercice : Convertir en décimal les nombres suivants +- $101_{|2}$ +- $11010_{|2}$ + +--- + +### MSB et LSB + +- Bits situés aux extrémités: + - **MSB** (*Most Significant Bit*) ou **bits de poids fort** : à gauche + - **LSB** (*Least Significant Bit*) ou **bits de poids faible** : à droite +- Exemple : + +|1|0|0|1| +|-|-|-|-| +|MSB|||LSB| + +--- + +Exercice : Donner le LSB et le MSB +- 10010100 + +--- + +### Multiples d'octets + +- Puissances de 10 +- Puissances de 2 + +--- + + +| Nom | Symbole | Nombre d'octets | Relation | +|-|-|-|-| +| kilooctet | ko | 10³ | 1000 octets +| mégaoctet | Mo | 10⁶ (million) | 1000 ko +| gigaoctet | Go | 10⁹ (milliard) | 1000 Mo +| téraoctet | To | 10¹² (billion) | 1000 Go +| pétatoctet | Po | 10¹⁵ (billiard) | 1000 To + +--- + + +| Nom | Symbole | Nombre d'octets | Relation | +|-|-|-|-| +|kibioctet|Kio| 2¹⁰ | 1024 o | +|mébioctet|Mio| 2²⁰ | 1024 Kio | +|gibioctet|Gio| 2³⁰ | 1024 Mio | +|tébioctet|Tio| 2⁴⁰ | 1024 Gio | + +--- + +Exercice : + +- La capacité d’un disque SSD est annoncée comme étant 512Go. + - Quelle est sa capacité en Gio et en Tio ? + + +--- + +## La base 16, système hexadécimal + +--- + +* Également très utilisé : Adresses MAC, IPv6, couleurs... +* Chaque symbole représente une puissances de 16 +* Nombres de 0 à 9 + lettres de A à F + - $\mathrm{3B} = 3_{|10}\times16^1 + 11_{|10}\times16^0 = 59_{|10}$ +* Convention : `0x` -> `0x1CF` + +--- + +Exercice: Convertir en décimal +- 0x1CF +- 0x3B7 + + + +--- + +## Conversions + +--- + +### Décimal vers binaire + +- 2 méthodes : + - Soustractions successives + - petits nombres + - Divisions successives + - grands nombres + +--- + +#### Méthode des soustractions successives + +$137_{|10} = 10001001_{|2}$ + +|128|64|32|16|8|4|2|1| +|---|--|--|--|-|-|-|-| +|1 |0 | 0| 0|1|0|0|1| + +--- + +1. Créer un tableau avec les puissances de 2 +1. De gauche à droite (du + grand au + petit) + - 0 si colonne > votre nombre + - 1 si colonne < ou = à votre nombre +1. Soustrayez la colonne et recommencez + +--- + + +!!! tip Astuce +Pour savoir quelle taille doit faire le tableau +- Connaître puissances de 2 +- **Ou** prendre la **partie entière** de + - $log(N)/log(2)$ + - $log_2(N)$ + +- Exemple avec $2367_{|10}$ + - $log(2367)/log(2) = 11,208$ + - Donc 2¹¹ soit 2048 +!!! +--- + +Exercice: Convertir en binaire +- $253_{|10}$ +- $111_{|10}$ + + + +--- + +#### Méthode des divisions successives + +--- + +Exemple avec le nombre $53_{|10}$ qui s'écrit $110101_{|2}$ en binaire : + +![divisions successives](../cours/CIEL1/02-reseau/divisions_successives.jpg) + +--- + +- La méthode : + 1. Divisez le nombre par 2. Notez le reste et le quotient. + 2. Divisez le quotient par 2. Notez le reste. + 3. Recommencez jusqu'à avoir un quotient de 0 + 4. Prenez le reste de chacune de vos divisions dans l'ordre **inverse** de vos calculs. + - Le dernier reste : bit de poids fort (MSB) + - le premier reste : bit de poids faible (LSB) + +--- + +Exercice: Convertir en binaire +- $253_{|10}$ +- $111_{|10}$ + + + +--- + +### Binaire vers hexadécimal + +- Regrouper les bits par 4 +- Compléter si besoin avec des 0 +- Remplacer chaque groupe par sa représentation hexadécimale + - Comment s'en souvenir ? Dessiner le tableau + +--- + +Exemple avec $110101_{|2}$: + +$$\overbrace{00}^{\text{ajout}}110101$$ + +$$\overbrace{0011}^{3_{|16}}\overbrace{0101}^{5_{|16}}$$ + +Résultat : $110101_{|2} = 35_{|16}$ + +--- + +Exercice : Convertir en hexadécimal +- $11000101_{|2}$ +- $101010_{|2}$ + + +--- + +Exercice : Convertir en binaire +- 0x6E +- 0x3CF + +