Ajoute correction TD numération

This commit is contained in:
Alexis Fourmaux 2025-09-17 15:46:03 +02:00
parent 35b80ab895
commit dc513f0c4b
3 changed files with 152 additions and 36 deletions

View file

@ -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}$
* $23311_{|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³² = 4294967296 nombres
- 128 bits -> 3,402823669 × 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 294967296 -> valeur max = 4 294967295 (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`

View file

@ -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`

View file

@ -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)