From dc513f0c4b8be173f980d2e2f4adb76c0caf66e9 Mon Sep 17 00:00:00 2001 From: Alexis Fourmaux Date: Wed, 17 Sep 2025 15:46:03 +0200 Subject: [PATCH] =?UTF-8?q?Ajoute=20correction=20TD=20num=C3=A9ration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CIEL1/02-reseau/td/_td01-correction.md | 181 ++++++++++++++---- .../CIEL1/02-reseau/td/td01-numeration.md | 6 +- src/cours/SUMMARY.md | 1 + 3 files changed, 152 insertions(+), 36 deletions(-) diff --git a/src/cours/CIEL1/02-reseau/td/_td01-correction.md b/src/cours/CIEL1/02-reseau/td/_td01-correction.md index 82ec362..863ba43 100644 --- a/src/cours/CIEL1/02-reseau/td/_td01-correction.md +++ b/src/cours/CIEL1/02-reseau/td/_td01-correction.md @@ -1,40 +1,73 @@ -# TD Représentation des nombres +# TD Représentation des nombres - Correction + +1. Dans les nombres suivants, indiquez le rang de chaque chiffre + - $52_{|10}$ : $\overbrace{5}^{1}\overbrace{2}^{0}$ + - $10011_{|2}$ : $\overbrace{1}^{4}\overbrace{0}^{3}\overbrace{0}^{2}\overbrace{1}^{1}\overbrace{1}^{0}$ + - $\mathrm{5FB}_{|16}$ : $\overbrace{5}^{2}\overbrace{\mathrm{F}}^{1}\overbrace{\mathrm{B}}^{0}$ 1. Convertissez les nombres suivants en décimal - - $\mathrm{5B0F}_{|16}$ - * $23 311_{|10}$ - - `0x1001` - * $4097_{|10}$ - $10011010_{|2}$ - * $154_{|10}$ - - `1001b` - * $9_{|10}$ + + * Si on utilise la méthode avec le tableau : + + |128|64|32|16|8|4|2|1| + |-|-|-|-|-|-|-|-| + |1|0|0|1|1|0|1|0| + + On a alors $10011010_{|2} = 128 + 16 + 8 + 2 = 154_{|10}$ + + - $11001011_{|2} = 128 + 64 + 8 + 2 + 1 = 203_{|10}$ + - $111101101100_{|2} = 2048 + 1024 + 512 + 256 + 64 + 32 + 8 + 4 = 3948_{|10}$ + - $101010101010_{|2} = 2048 + 512 + 128 + 32 + 8 + 2 = 2730_{|10}$ + - $1100101111_{|2} = 512 + 256 + 32 + 8 + 4 + 2 + 1 = 815_{|10}$ + - `1001b` = $9_{|10}$ 2. Convertissez les nombres suivants en binaire - - $251_{|10}$ (utilisez les deux méthodes) - * 1111 1011b - - $3887_{|10}$ (utilisez les deux méthodes) - * 1111 0010 1111b - - $\mathrm{532}_{|16}$ - * 0101 0011 0010b - - $\mathrm{5B0F}_{|16}$ - * 0101 1011 0000 1111b + - $19_{|10}$ + - Méthode des soustractions successives : + |16|8|4|2|1| + |--|-|-|-|-| + | 1|0|0|1|1| -3. Convertissez les nombres suivants en hexadécimal - - $10011010_{|2}$ - * 0x9A - - $100110101_{|2}$ - * 0x135 - - $111 1001 1100 1011 1101 0001_{|2}$ - * 0x79CBD1 + Soit : $19_{|10} = 16 + 1 = 10011_{2}$ + - Méthode des divisions successives : + * 19/2 = 9 **reste 1** (poids faible) + * 9/2 = 4 **reste 1** + * 4/2 = 2 **reste 0** + * 2/2 = 1 **reste 0** + * 1/2 = 0 **reste 1** (poids fort) + On prend alors les restes dans l'ordre inverse des calculs (la dernière division représente le poids fort) : $19_{|10} = 10011_{2}$ + - $251_{|10} = 1111 1011_{|2}$ + |128|64|32|16|8|4|2|1| + |-|-|-|-|-|-|-|-| + |1|1|1|1|1|0|1|1| + - $3887_{|10} = 1111 0010 1111_{|2}$ + |2048|1024|512|256|128|64|32|16|8|4|2|1| + |-|-|-|-|-|-|-|-|-|-|-|-| + |1|1|1|1|0|0|1|0|1|1|1|1| + - $439_{|10} = 1 1011 0111_{|2}$ -4. Combien de nombres un octet permet-il de représenter ? Justifier. - * 2⁸ = 256 -> 256 nombres +3. Combien de nombres peut-on représenter avec + - 8 bits (un octet) -> 2⁸ = 256 -> 256 nombres + - 12 bits -> 2¹² = 4096 nombres + - 16 bits -> 2¹⁶ = 65 536 nombres + - 32 bits -> 2³² = 4 294 967 296 nombres + - 128 bits -> 3,402 823 669 × 10³⁸ nombres 5. En admettant qu'un nombre entier naturel soit codé sur 32 bits, quelle est la valeur maximale que peut avoir un entier naturel ? À votre avis, dans un système informatique, que se passe-t-il si on augmente de 1 la valeur maximale d'un entier ? * 2³² = 4 294 967 296 -> valeur max = 4 294 967 295 (Il ne faut pas oublier le zéro) * Il repasse à zéro : on appelle ça un débordement (overflow en anglais). C'est une source de bugs courante. C'est pour cela qu'il faut être attentif à la valeur maximale qu'un nombre peut avoir dans vos programmes. +7. Quelle est la capacité d'un disque dur de 1To + - en Go + * 1000 Go + - en Mo + * 1 000 000 Mo + - en Gio + * 10¹² / 2³⁰ = 932,3 Gio + - en Mio + * 953 674,3 Mio + 6. Mon ordinateur m'indique qu'un fichier fait 13 560 788 octets. Combien cela représente-t-il environ (1 chiffre après la virgule) - en kio * 13 560 788 / 2¹⁰ = 13243,0 kio @@ -45,12 +78,92 @@ - en Mo * 13,6 Mo -7. Quelle est la capacité d'un disque dur de 1To - - en Go - * 1000 Go - - en Mo - * 1 000 000 Mo - - en Gio - * 10¹² / 2³⁰ = 932,3 Gio - - en Mio - * 953 674,3 Mio +9. Convertissez les nombres suvants en décimal + + - $\mathrm{12}_{|16} = 1 \times 16^{1} + 2 \times 16^0 = 16 + 2 = 18$ + - $\mathrm{C3}_{|16} = 12 \times 16^{1} + 3 \times 16^0 = 192 + 3 = 195$ + + On utilise le tableau suivant pour convertir les lettres hexadécimales : + |Décimal | Hexadécimal | Binaire| + |--------|-------------|--------| + |0|0|0000| + |1|1|0001| + |2|2|0010| + |3|3|0011| + |4|4|0100| + |5|5|0101| + |6|6|0110| + |7|7|0111| + |8|8|1000| + |9|9|1001| + |10|A|1010| + |11|B|1011| + |**12**|**C**|**1100**| + |13|D|1101| + |14|E|1110| + |15|F|1111| + + - $\mathrm{5B0F}_{|16} = 5 \times 16^{3} + 11 \times 16^{2} + 0 \times 16^{1} + 15 \times 16^0 = 23 311$ + - $\mathrm{445B}_{|16} = 4 \times 16^{3} + 4 \times 16^{2} + 5 \times 16^{1} + 11 \times 16^0 = 17 499$ + - $\mathrm{DE1D}_{|16} = 13 \times 16^{3} + 14 \times 16^{2} + 1 \times 16^{1} + 13 \times 16^0 = 56 861$ + - $\mathrm{B64F}_{|16} = 11 \times 16^{3} + 6 \times 16^{2} + 4 \times 16^{1} + 15 \times 16^0 = 46 671$ + - `0x1001` + +10. Convertissez les nombres suivants en binaire + - $\mathrm{12}_{|16} = \overbrace{1}^{0001}\overbrace{2}^{0010}$ + + On utilise le tableau suivant pour convertir les valeurs hexadécimales : + |Décimal | Hexadécimal | Binaire| + |--------|-------------|--------| + |0|0|0000| + |1|1|0001| + |2|2|0010| + |3|3|0011| + |4|4|0100| + |5|5|0101| + |6|6|0110| + |7|7|0111| + |8|8|1000| + |9|9|1001| + |10|A|1010| + |11|B|1011| + |12|C|1100| + |13|D|1101| + |14|E|1110| + |15|F|1111| + + - $\mathrm{C3}_{|16} = \overbrace{C}^{1100}\overbrace{3}^{0011} = 1100~0011_{|2}$ + - $\mathrm{532}_{|16} = \overbrace{5}^{0101}\overbrace{3}^{0011}\overbrace{2}^{0010} = 0101~0011~0010_{|2}$ + - $\mathrm{5B0F}_{|16} = 0101~1011~0000~1111_{|2}$ + - $\mathrm{445B}_{|16} = 0100~0100~0101~1011_{|2}$ + - $\mathrm{DE1D}_{|16} = 1101~1110~0001~1101_{|2}$ + - $\mathrm{B64F}_{|16} = 1011~0110~0100~1111_{|2}$ + - $\mathrm{F09A}_{|16} = 1111~0000~1001~1010_{|2}$ + +11. Convertissez les nombres suivants en hexadécimal + - $1001~1010_{|2} = \overbrace{1001}^{9}~\overbrace{1010}^{\mathrm{A}} = \mathrm{9A}_{|16}$ + - $1~0011~0101_{|2} = \overbrace{0001}^{1}~\overbrace{0011}^{3}~\overbrace{0101}^{\mathrm{5}} = \mathrm{135}_{|16}$ + - $111~1001~1100~1011~1101~0001_{|2} =  \mathrm{79~CB~D1}_{|16}$ + - $456_{|10}$ + - Divisions successives : + - 456/16 = 28 reste 8 + - 28/16 = 1 reste 12 -> C + - 1/16 = 0 reste 1 + + On prend alors les restes dans l'ordre inverse des calculs (la dernière division représente le poids fort) : $\mathrm{1C8}_{|16}$ + - $167_{|10} = \mathrm{A7}_{|16}$ + - $8499_{|10} = 2133_{|16}$ + +12. Donnez le résultat des opérations booléennes suivantes, avec `a = True`, `b = False` + - `a and b = False` + - `a or b = True` + - `not (a and b) = True` + - `a and not b = True` + - `b or not b = True` + +13. Donnez le résultat des opérations bit à bit suivantes, avec $a = 58_{|10}$ et $b = 77_{|10}$ en considérant que $a$ et $b$ sont des octets. + - `a | b -> OU bit à bit : 0011 1010 | 0100 1101 = 0111 1111` + - `b & a -> ET bit à bit : 0011 1010 & 0100 1101 = 0000 1000` + - `b ^ a -> OU EXCLUSIF (XOR) bit à bit : 0011 1010 ^ 0100 1101 = 0111 0111` + - `~b | a -> 0011 1010 | 1011 0010 = 1011 1010` + - `~(b | a) -> ~(0011 1010 | 0100 1101) = ~(0111 1111) = 1000 0000` \ No newline at end of file diff --git a/src/cours/CIEL1/02-reseau/td/td01-numeration.md b/src/cours/CIEL1/02-reseau/td/td01-numeration.md index 1e4a1d8..8b8c722 100644 --- a/src/cours/CIEL1/02-reseau/td/td01-numeration.md +++ b/src/cours/CIEL1/02-reseau/td/td01-numeration.md @@ -2,9 +2,8 @@ 1. Dans les nombres suivants, indiquez le rang et la valeur de chaque chiffre. - $52_{|10}$ - - $675_{|10}$ - - $1010_{|2}$ - $10011_{|2}$ + - $\mathrm{5FB}_{|16}$ 1. Convertissez les nombres suivants en décimal - $10011010_{|2}$ @@ -64,6 +63,9 @@ - $10011010_{|2}$ - $100110101_{|2}$ - $111 1001 1100 1011 1101 0001_{|2}$ + - $456_{|10}$ + - $167_{|10}$ + - $8499_{|10}$ 12. Donnez le résultat des opérations booléennes suivantes, avec `a = True`, `b = False` - `a and b` diff --git a/src/cours/SUMMARY.md b/src/cours/SUMMARY.md index 1218d67..c390926 100644 --- a/src/cours/SUMMARY.md +++ b/src/cours/SUMMARY.md @@ -3,6 +3,7 @@ - [Numération](./CIEL1/02-reseau/cours/representation_nombres.md) - [Opérations logiques](./CIEL1/02-reseau/cours/operations.md) - [TD1 - Représentation des nombres](./CIEL1/02-reseau/td/td01-numeration.md) + - [TD1 - Représentation des nombres - Correction](./CIEL1/02-reseau/td/_td01-correction.md) - [TD2 - Adresse IP](./CIEL1/02-reseau/td/td02_adresse_IP.md) - [Bases de l'algorithmique avec Python](./CIEL1/01-bases-python/algorithmique-python.md) - [Cours - 1 - Bases](./CIEL1/01-bases-python/cours/python-bases-1-variables-operateurs.md)