Améliorations et relectures

This commit is contained in:
Alexis Fourmaux 2025-08-27 16:16:42 +02:00
parent 0d2d74454f
commit 878b016119
12 changed files with 312 additions and 201 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 158 KiB

View file

@ -10,15 +10,18 @@ Les nombres peuvent avoir plein de représentations différentes, selon les cont
On écrit les nombres avec une succession de symboles, les chiffres, qui représentent une valeur.
On utilise un système positionnel, c'est à dire que la valeur du symbole diffère selon sa position dans le nombre. Ex.
- le nombre 222 : le 2 le plus à gauche (celui des centaines) vaut 10 fois plus que celui du milieu (celui des dizaines), qui vaut lui même 10 fois plus que celui de droite (celui des unités). Et pourtant il s'agit toujours d'un 2, le même symbole.
On utilise un système positionnel, c'est à dire que la valeur du symbole diffère selon sa position dans le nombre.
```admonish example title="Exemple"
Le nombre 222 : le 2 le plus à gauche (celui des centaines) vaut 10 fois plus que celui du milieu (celui des dizaines), qui vaut lui même 10 fois plus que celui de droite (celui des unités). Et pourtant il s'agit toujours d'un 2, le même symbole.
```
La position dans le nombre s'appelle le **rang** et sa valeur s'appelle le **poids**. Plus le rang est élevé, plus le poids est élevé.
En base 10, le poids d'un nombre est multiplié par 10 à chaque fois qu'on monte d'un rang :
- Si le nombre est placé tout à droite, en première position, au niveau des unités, son poids sera la valeur du chiffre multiplié par 1 (ou 10⁰)
- Si le nombre est placé au niveau des dizaines, en seconde position, son poids sera 10 fois plus élevé : on multipliera le chiffre par 10 (ou 10¹)
- Si le nombre est placé au niveau des centaines, en troisième position, son poids sera encore 10 fois lus élevé (et 100 fois plus élevé que pour les unités) : on multipliera le chiffre par 100 (ou 10²).
- Si le nombre est placé tout à droite, en première position (rang 0), au niveau des unités, son poids sera la valeur du chiffre multiplié par 1 (ou 10⁰)
- Si le nombre est placé au niveau des dizaines, en seconde position (rang 1), son poids sera 10 fois plus élevé : on multipliera le chiffre par 10 (ou 10¹)
- Si le nombre est placé au niveau des centaines, en troisième position (rang 2), son poids sera encore 10 fois plus élevé (et 100 fois plus élevé que pour les unités) : on multipliera le chiffre par 100 (ou 10²).
- On peut ainsi extrapoler avec les milliers, les dizaines de milliers etc.
Donc un nombre représenté en base 10 pourra correspondre à la formule suivante (où les $a_i$ sont les chiffres de rang $i$) :
@ -34,10 +37,11 @@ Les $a_i$ diffèrent selon les bases :
- en base 2, on utilise les chiffres de 0 à 1
- en base 16, on utilise les chiffres de 0 à F (on utilisera des lettres pour les "chiffres" au delà de 9)
Par exemple :
```admonish example title="Exemple"
- $48_{|10}$ pour 48 en base 10 : $4\times10^1+8\times10^0$
- $56_{|16}$ pour 86 en base 16 : $5\times16^1+6\times16^0$
- $1011_{|2}$ pour 11 en base 2 : $1\times2^3+0\times2^2+1\times2^1+1\times2^0$
```
Remarquez que nous avons écrit la base avec le symbole | pour éviter les confusions
@ -53,11 +57,12 @@ Le système binaire est très utilisé en informatique. Il sert notamment en ré
Dans le système binaire, chaque symbole représente une puissance de 2. Comme il n'y en a que 2 nécessaires, on utilise le 0 et le 1.
Exemples:
```admonish example title="Exemple"
- $11_{|2} = 1\times2^1+1\times2^0 = 3_{|10}$
- $101_{|2} = 1\times2^3+0\times2^2+1\times2^1+1\times2^0 = 5_{|10}$
```
Chaque symbole est appelé un **bit** (**Bi**nary dig**it*) pour les distinguer des chiffres du système décimal.
Chaque symbole est appelé un **bit** (**Bi**nary dig**it**) pour les distinguer des chiffres du système décimal.
On regroupe souvent les bits en paquets de 8 que l'on va appeler **octets** (bytes en anglais). Un octet permet de représenter 256 nombres (de 0 à 255)
@ -67,10 +72,12 @@ Dans un nombre binaire on se réfère souvent aux bits situés aux extrémités:
- On parlera de **MSB** (*Most Significant Bit*) ou **bits de poids fort** pour les bits les plus à gauche (dont le **poids/rang** est plus élevé)
- On parlera de **LSB** (*Least Significant Bit*) ou **bits de poids faible** pour les bits les plus à droite (dont le **poids/rang** est plus bas)
Par exemple pour le nombre $1001_{|2}$ :
```admonish example title="Exemple"
Pour le nombre $1001_{|2}$ :
|1|0|0|1|
|-|-|-|-|
|MSB|||LSB|
```
### Multiples d'octets
@ -89,27 +96,10 @@ Pour parler des capacités de supports de stockage ou de la mémoire vive on par
- le gibioctet (Gio) = 2³⁰ octets = 1024 Mio
- le tébioctet (Tio) = 2⁴⁰ octets = 1024 Gio
## La base 16, système hexadécimal
Le système hexadécimal est également très utilisé :
- Les adresses MAC en réseau, ou les adresses IPv6
- Les couleurs dans la plupart des logiciels de dessin ou de retouche photo
- Les valeurs binaires dans de nombreux langages de programmation
Sur le même modèle que précédemment, les valeurs des symboles utilisés sont des puissances de 16. Dans ce système, on utilise les 10 chiffres du systèmes décimal (de 0 à 9), suivis des premières lettres de l'alphabet latin (de A à F pour les valeurs de 10 à 15).
- $\mathrm{3B} = 3_{|10}\times16^1 + 11_{|10}\times16^0 = 59_{|10}$
- $\mathrm{1CF} = 1_{|10}\times16^2 + 12_{|10}\times16^1 + 15_{|10}\times16^0 = 463_{|10}$
La convention pour écrire des nombres hexadécimaux est de les précéder par `0x` : `0x1CF`.
Cette écriture fonctionne en Python, qui interprètera votre valeur comme codée en hexadécimal si vous l'écrivez avec `0x`.
## Conversions
### Conversions
Dans de nombreux cas il sera nécessaire de pouvoir convertir les nombres d'une base à l'autre. Nous l'utiliserons souvent en réseau, mais également en informatique bas niveau (embarquée).
### Binaire - Décimal
#### Décimal vers binaire
##### Méthode des soustractions successives
@ -124,7 +114,8 @@ Procédez de cette manière :
1. Procédez comme ça jusqu'à ce que votre tableau soit rempli
1. Votre nombre binaire sera écrit dans les cases de votre tableau
Exemple: $137_{|10} = 10001001_{|2}$
```admonish example title="Exemple"
$137_{|10} = 10001001_{|2}$
|128|64|32|16|8|4|2|1|
|---|--|--|--|-|-|-|-|
@ -136,6 +127,7 @@ Exemple: $137_{|10} = 10001001_{|2}$
4. 9 - 8 = 1
5. 1 est inférieur à 4 et 2 donc on y met 0. On met 1 dans la colonne 1.
6. Nous avons rempli toutes nos colonnes : on peut lire notre nombre dans le tableau, de gauche à droite : $10001001_{|2}$
```
```admonish tip title='Astuce'
Pour savoir jusqu'où devrait aller votre tableau, vous devez savoir quelle sera la plus grande puissance de 2 impliquée. Pour cela :
@ -157,9 +149,11 @@ La méthode:
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)
Exemple avec le nombre $53_{|10}$ qui s'écrit $110101_{|2}$ en binaire :
```admonish example title="Exemple"
Le nombre $53_{|10}$ qui s'écrit $110101_{|2}$ en binaire :
![divisions successives](./divisions_successives.svg)
```
#### Binaire vers décimal
@ -169,6 +163,7 @@ Pour calculer le nombre décimal à partir du nombre binaire, il suffit de prend
Le bit de poids faible a une puissance de 0 (2⁰ = 1) et non pas de 1 (2¹ = 2)
```
```admonish example title="Exemple"
Ainsi pour $110101_{|2}$, cela revient à faire :
|Bits|1|1|0|1|0|1|
@ -179,8 +174,28 @@ Ainsi pour $110101_{|2}$, cela revient à faire :
Et donc :
$$1\times2^5 + 1\times2^4 + 0\times2^3 + 1\times2^2 + 0\times2^1 + 1\times2^0 = 32 + 16 + 4 + 1 = 53$$
```
### Binaire vers Hexadécimal
## La base 16, système hexadécimal
Le système hexadécimal est également très utilisé :
- Les adresses MAC en réseau, ou les adresses IPv6
- Les couleurs dans la plupart des logiciels de dessin ou de retouche photo
- Les valeurs binaires dans de nombreux langages de programmation
Sur le même modèle que précédemment, les valeurs des symboles utilisés sont des puissances de 16. Dans ce système, on utilise les 10 chiffres du systèmes décimal (de 0 à 9), suivis des premières lettres de l'alphabet latin (de A à F pour les valeurs de 10 à 15).
```admonish example title="Exemple"
- $\mathrm{3B} = 3_{|10}\times16^1 + 11_{|10}\times16^0 = 59_{|10}$
- $\mathrm{1CF} = 1_{|10}\times16^2 + 12_{|10}\times16^1 + 15_{|10}\times16^0 = 463_{|10}$
```
La convention pour écrire des nombres hexadécimaux est de les précéder par `0x` : `0x1CF`.
Cette écriture fonctionne en Python, qui interprètera votre valeur comme codée en hexadécimal si vous l'écrivez avec `0x`.
### Conversions
#### Binaire vers Hexadécimal
Pour convertir un nombre binaire en hexadécimal, c'est plus simple. Un nombre hexadécimal est facile à représenter avec 4 bits ($1111_{|2} = 15_{|10} = \mathrm{F}_{|16}$).
@ -207,7 +222,8 @@ Si votre nombre ne contient pas assez de bits pour faire un groupe de 4, rajoute
|14|E|1110
|15|F|1111
Exemple avec $110101_{|2}$:
```admonish example title="Exemple"
Avec $110101_{|2}$:
1. On n'a que 6 bits, il faut donc rajouter deux zéros à gauche pour faire deux paquets de 4.
$$\overbrace{00}^{\text{ajout}}110101$$
@ -215,16 +231,72 @@ $$\overbrace{00}^{\text{ajout}}110101$$
$$\overbrace{0011}^{3_{|16}}\overbrace{0101}^{5_{|16}}$$
3. Cela nous donne alors $110101_{|2} = 35_{|16}$
```
### Hexadécimal vers binaire
#### Hexadécimal vers binaire
Pour convertir un nombre hexadécimal vers binaire, il faut faire exactement pareil, en remplaçant la représentation hexadécimale du nombre par sa représentation binaire.
Ex: $\mathrm{6B}_{|16} = {\overbrace{0110}^{6_{|16}}\overbrace{1011}^{\mathrm{B}_{|16}}}_{|2}$
```admonish example title="Exemple"
$$\mathrm{6B}_{|16} = {\overbrace{0110}^{6_{|16}}\overbrace{1011}^{\mathrm{B}_{|16}}}_{|2}$$
```
#### Hexadécimal vers décimal
Pour calculer le nombre décimal à partir du nombre hexadécimal, il suffit de prendre la formule de la première partie appliquée à une base 16 : prenez chaque chiffre et multipliez-le par son poids.
```admonish warning title='Attention'
Le bit de poids faible a une puissance de 0 (16⁰ = 1) et non pas de 1 (16¹ = 16)
```
```admonish example title="Exemple"
Ainsi pour $\mathrm{6A}_{|16}$, cela revient à faire :
|Chiffres|6|A|
|-|-|-|
|Rang/Puissance|1|0|
|Poids|16|1|
|Valeur|96|10|
Et donc :
$$6\times16^1 + 10\times16^0 = 96 + 10 = 106$$
```
#### Décimal vers hexadécimal
##### Base intermédiaire
Cette méthode consiste à d'abord convertir un nombre en binaire, puis à convertir le nombre binaire en nombre hexadécimal.
```admonish example title="Exemple"
Le nombre $47_{|10}$.
On utilise la méthode des soustractions :
|32|16|8|4|2|1|
|--|--|-|-|-|-|
| 1| 0|1|1|1|1|
Puis on regroupe les bits en paquets de 4, en n'oubliant pas de compléter avec des zéros.
$${\overbrace{0010}^{2_{|16}}\overbrace{1111}^{\mathrm{F}_{|16}}}_{|2} = \mathrm{2F}_{|16}$$
```
##### Méthode des division successives
Cette méthode est similaire à celle des divisions successives pour la conversion d'un nombre décimal en binaire.
```admonish example title="Exemple"
Toujours avec le nombre $47_{|10}$
![divisions hexa](divisions_hexa.svg)
On obtient donc $47_{|10} = \mathrm{2F}_{|16}$
```
# Opérations logiques
TODO
# Annexes
### Tableau des puissances de 2

View file

@ -15,8 +15,8 @@
|-|-|-|-|-|
|112.34.65.3/24|255.255.255.0|112.34.65.255|112.34.65.0|254|
|192.168.17.43/16|255.255.0.0|192.168.255.255|192.168.0.0|65 534|
|10.3.10.1/21|255.255.248|10.3.15.255|10.3.8.0|2046|
|172.16.21.34/28|255.255.240.0|172.16.21.47|172.16.21.32|14|
|10.3.10.1/21|255.255.248.0|10.3.15.255|10.3.8.0|2046|
|172.16.21.34/28|255.255.255.240|172.16.21.47|172.16.21.32|14|
2. Donnez la notation CIDR des adresses suivantes
- 192.168.3.45 masque 255.255.255.0 -> 192.168.3.45/24

View file

@ -1,34 +1,66 @@
# TD Représentation des nombres
1. Dans les nombres suivants, indiquez le rang, le poids et la valeur de chaque chiffre.
- $52_{|10}$
- $675_{|10}$
- $1010_{|2}$
- $10011_{|2}$
1. Convertissez les nombres suivants en décimal
- $\mathrm{5B0F}_{|16}$
- `0x1001`
- $10011010_{|2}$
- $11001011_{|2}$
- $111101101100_{|2}$
- $101010101010_{|2}$
- $1100101111_{|2}$
- `1001b`
2. Convertissez les nombres suivants en binaire
- $251_{|10}$ (utilisez les deux méthodes)
- $3887_{|10}$ (utilisez les deux méthodes)
- $\mathrm{532}_{|16}$
- $\mathrm{5B0F}_{|16}$
2. Convertissez les nombres suivants en binaire (utilisez les deux méthodes à chaque fois)
- $17_{|10}$
- $251_{|10}$
- $3887_{|10}$
- $439_{|10}$
3. Convertissez les nombres suivants en hexadécimal
- $10011010_{|2}$
- $100110101_{|2}$
- $111 1001 1100 1011 1101 0001_{|2}$
4. Combien de nombres un octet permet-il de représenter ? Justifier.
4. Combien de nombres peut-on représenter avec
- 8 bits (un octet)
- 12 bits
- 16 bits
- 32 bits
- 128 bits
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 ?
7. Quelle est la capacité d'un disque dur de 1To
7. Quelle est la capacité d'un disque dur de 1To ?
- en Go
- en Mo
- en Gio
- en Mio
8. 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)
8. 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
- en Mio
- en Ko
- en Mo
- en Mo
9. Convertissez les nombres suvants en décimal
- $\mathrm{12}_{|16}$
- $\mathrm{C3}_{|16}$
- $\mathrm{5B0F}_{|16}$
- $\mathrm{445B}_{|16}$
- $\mathrm{DE1D}_{|16}$
- $\mathrm{B64F}_{|16}$
- `0x1001`
10. Convertissez les nombres suivants en binaire
- $\mathrm{12}_{|16}$
- $\mathrm{C3}_{|16}$
- $\mathrm{532}_{|16}$
- $\mathrm{5B0F}_{|16}$
- $\mathrm{445B}_{|16}$
- $\mathrm{DE1D}_{|16}$
- $\mathrm{B64F}_{|16}$
- $\mathrm{F09A}_{|16}$
11. Convertissez les nombres suivants en hexadécimal
- $10011010_{|2}$
- $100110101_{|2}$
- $111 1001 1100 1011 1101 0001_{|2}$

View file

@ -0,0 +1 @@
# TD2 - Adresse IP

View file

@ -1,57 +1,64 @@
# TD - Adressage IP
1. Donnez le type des adresses suivantes
- 34 allée des peupliers 13400 Aubagne FRANCE
- A5:A1:9C:B6:9C:67
- 177.34.54.12
- A5:A1:9C:B6:9C:67
- 177.34.54.12
1. L'adresse 192.345.2.13 est-elle valide ? Justifiez
2. Donnez pour les adresses suivantes : le masque, l'identifiant de réseau, l'identifiant hôte, l'adresse de diffusion, l'adresse de réseau et la taille de la plage adressable:
- 112.34.65.3/24
- 192.168.17.43/16
- 10.3.10.1/21
- 172.16.21.34/28
2. Donnez la notation CIDR et l'adresse de réseau des adresses suivantes
- 192.168.3.45 masque 255.255.255.0
- 224.6.75.1 masque 255.255.240.0
- 10.0.75.1 masque 255.192.0.0
- 212.195.235.190 masque 192.0.0.0
- 39.113.117.250 masque 255.255.224.0
- 79.43.100.194 masque 255.128.0.0
2. Donnez la notation CIDR des adresses suivantes
- 192.168.3.45 masque 255.255.255.0
- 224.6.75.1 masque 255.255.240.0
- 10.0.75.1 masque 255.192.0.0
2. Donnez pour les adresses suivantes : le masque, l'identifiant de réseau, l'identifiant hôte, l'adresse de diffusion, l'adresse de réseau et la taille de la plage adressable:
- 112.34.65.3/24
- 192.168.17.43/16
- 10.3.10.1/21
- 172.16.21.34/28
- 133.203.141.89/12
- 195.132.93.162/31
- 85.55.32.207/23
- 126.50.215.199/18
3. Dites si les adresses suivantes sont publiques ou privées et si elles peuvent servir à adresser une machine
- 223.45.52.12
- 172.19.2.21
- 172.44.17.0
- 12.255.255.255
- 192.168.43.89
- 10.3.0.1
- 127.0.0.1
- 192.169.17.21
- 178.3.2.1
- 0.127.4.100
- 223.45.52.12
- 172.19.2.21
- 172.44.17.0
- 12.255.255.255
- 192.168.43.89
- 10.3.0.1
- 127.0.0.1
- 192.169.17.21
- 178.3.2.1
- 0.127.4.100
4. Une entreprise souhaite relier ses 80 machines dasn un réseau informatique. L'administrateur choisit le réseau 192.168.1.0/24
a. Donnez le masque de ce réseau
b. Donnez la première et la dernière adresse du réseau
c. Combien de machines peuvent être connectées en même temps sur ce réseau ?
d. Quelle est l'adresse de broadcast du réseau ?
e. Est-ce que ce réseau est un bon choix pour l'entreprise ? Justifiez
f. Dans quel cas doit-on utiliser l'adresse de broadcast ?
g. Si on souhaite découper le réseau en 8 sous-réseaux, quel sera le masque qui permettra ce découpage ?
h. Complétez le tableau ci-dessous
4. Une entreprise souhaite relier ses 80 machines dans un réseau informatique. L'administrateur choisit le réseau 192.168.1.0/24
|N°|Adresse de sous-réseau|1ere adresse|Dernière adresse|Adresse de broadcast|
|-|-|-|-|-|
|0|||||
|1|||||
|2|||||
|3|||||
|4|||||
|5|||||
|6|||||
|7|||||
1. Donnez le masque de ce réseau
1. Donnez la première et la dernière adresse du réseau
1. Combien de machines peuvent être connectées en même temps sur ce réseau ?
1. Quelle est l'adresse de broadcast du réseau ?
1. Est-ce que ce réseau est un bon choix pour l'entreprise ? Justifiez
1. Dans quel cas doit-on utiliser l'adresse de broadcast ?
1. Si on souhaite découper le réseau en 8 sous-réseaux, quel sera le masque qui permettra ce découpage ?
1. Complétez le tableau ci-dessous
i. Est-ce que les ordinateurs ayant les IP 192.168.1.120 et 192.168.1.130 peuvent communiquer entre eux ? Pourquoi ?
j. Combien y a-t-il d'adresses dans chaque sous-réseau
k. Combien y a-t-il d'adresses perdues avec ce découpage ?
l. Donnez la notation CIDR de la première machine appartenant au réseau n°4
|N°|Adresse de sous-réseau|1ere adresse|Dernière adresse|Adresse de broadcast|
|-|-|-|-|-|
|0|||||
|1|||||
|2|||||
|3|||||
|4|||||
|5|||||
|6|||||
|7|||||
1. Est-ce que les ordinateurs ayant les IP 192.168.1.120 et 192.168.1.130 peuvent communiquer entre eux ? Pourquoi ?
1. Combien y a-t-il d'adresses dans chaque sous-réseau
1. Combien y a-t-il d'adresses perdues avec ce découpage ?
1. Donnez la notation CIDR de la première machine appartenant au réseau n°4