Chapitre 2. Entiers non-signés
Activités introductives (révision de seconde)
Se rendre sur la page des activités
Méthodes
Exercices d’application directe
Exercice 1. Somme en binaire
Calculer en binaire la somme des entiers 111101|_2 et 11101|_2.
Correction
Les retenues sont présentées en rouge au dessus du calcul.
Exercice 2. Du binaire vers le décimal
Déterminer la représentation décimale des nombres suivants.
- 10011|_2
- 1110101|_2
Correction du 1.
Correction du 2.
Exercice 3. Du décimal vers le binaire
Déterminer la représentation binaire des nombres suivants.
- 48
- 79
Correction du 1.
-
Méthode 1. Par soustractions successives
-
Méthode 2. Par divisions successives
Correction du 2.
-
Méthode 1. Par soustractions successives
-
Méthode 2. Par divisions successives
Exercice 4. De l’hexadécimal vers le décimal
Déterminer la représentation décimale des nombres suivants.
- 2\text{e}|_{16}
- 1\text{c}3|_{16}
- \text{ff}|_{16}
Remarque. En informatique, il est d’usage de noter un nombre hexadécimal de la manière suivante en le préfixant de 0x
. Par exemple,
2\text{e}|_{16} est noté 0x2e
.
Correction du 1.
Correction du 2.
Correction du 3.
Remarque. Le calcul était ici inutile. En effet, on sait que deux chiffres hexadécimaux correspondent à un octet soit 8 bits. Sur 8 bits, on peut coder 2^8 = 256 valeurs différentes. Ainsi, pour les nombres entiers non-signés, cela représente les nombres allant de 0 à 255. Ce résultat était attendu car \text{f} est le chiffre hexadécimal le plus élevé.
Exercice 5. Du décimal vers l’hexadécimal
Déterminer la représentation hexadécimale des nombres suivants.
- 193
- 154
- 171
- 255
Correction du 1.
Donc 193 = \text{c}1|_{16}.
Correction du 2.
Donc 154 = 9\text{a}|_{16}.
Correction du 3.
Donc 171 = \text{a}\text{b}|_{16}.
Correction du 4.
La réponse est ici immédiate : 255 = \text{ff}|_{16} (voir la correction de la question 3. de l’exercice 4.)
Exercice 6. Du binaire vers l’hexadécimal
Déterminer la représentation hexadécimal des nombres suivants.
- 1011100|_2
- 111011|_2
- 11110000|_2
Correction du 1.
Pour ce calcul, il est utile d’avoir en tête le tableau suivant des quatre premières puissances de deux.
2^3 | 2^2 | 2^1 | 2^0 |
8 | 4 | 2 | 1 |
On commence par séparer le nombre en demi-octets (4 bits chacun) et on calcule leurs valeurs respectives en décimal puis en hexadécimal.
Donc 1011100|_2 = 5\text{c}|_{16}
Remarque. Le nombre binaire de départ était codé sur 7 bits. On l’a séparé en demi-octets en partant de la droite formant ainsi un groupe de 3 bits et un groupe de 4 bits.
Correction du 2.
Pour ce calcul, il est utile d’avoir en tête le tableau suivant des quatre premières puissances de deux.
2^3 | 2^2 | 2^1 | 2^0 |
8 | 4 | 2 | 1 |
On commence par séparer le nombre en demi-octets (4 bits chacun) et on calcule leurs valeurs respectives en décimal puis en hexadécimal.
Donc 111011|_2 = 3\text{b}|_{16}
Remarque. Le nombre binaire de départ était codé sur 6 bits. On l’a séparé en demi-octets en partant de la droite formant ainsi un groupe de 2 bits et un groupe de 4 bits.
Correction du 3.
Pour ce nombre, la réponse est immédiate. En effet sur 4 bits, 1111|_2 est le nombre maximum possible. Donc 1111|_2 = 15 = \text{f}|_{16}. Par ailleurs, 0000|_2 = 0 = 0|_{16}.
Donc 11110000|_2 = \text{f}0|_{16}
Exercice 7. De l’hexadécimal vers le binaire
Déterminer la représentation binaire des nombres suivants.
- \text{a}5|_{16}
- \text{d}7|_{16}
- 2\text{f}|_{16}
- \text{fe}|_{16}
Correction du 1.
Pour ce calcul, il est utile d’avoir en tête le tableau suivant des quatre premières puissances de deux.
2^3 | 2^2 | 2^1 | 2^0 |
8 | 4 | 2 | 1 |
On décompose les chiffres hexadécimaux en puissance de 2 puis on les convertit en binaire.
Donc \text{a}5|_{16} = 10100101|_2.
Correction du 2.
Pour ce calcul, il est utile d’avoir en tête le tableau suivant des quatre premières puissances de deux.
2^3 | 2^2 | 2^1 | 2^0 |
8 | 4 | 2 | 1 |
On décompose les chiffres hexadécimaux en puissance de 2 puis on les convertit en binaire.
Donc \text{d}7|_{16} = 11010111|_2.
Correction du 3.
On décompose les chiffres hexadécimaux en puissance de 2 : Remarque. \text{f} étant le chiffre hexadécimal le plus élevé, il correspond au demi octet 1111|_2. Le calcul précédent était donc inutile.
Donc 2\text{f}|_{16} = 101111|_2.
Correction du 4.
Pour le nombre \text{fe}|_{16}, on peut se passer de l’intermédiaire décimal.
Donc \text{fe}|_{16} = 11111110|_2
Exercices bilan
Exercice 8. Couleurs Web
Les couleurs Web permettent de définir l’apparence d’une page Web (par exemple la couleur de ses titres, la couleur de son arrière plan). Dans le code de la page Web, on peut définir les couleurs en précisant un nom ou un code numérique exprimé en décimal ou en hexadécimal.
On donne ci dessous le nom et les codes utilisés pour la couleur rouge dans le langage CSS qui permet de définir l’apparence d’une page Web.
Nom | Code décimal | Code hexadécimal |
---|---|---|
red |
rgb(255,0,0) |
#FF0000 |
-
D’après le code hexadécimal de la couleur rouge, sur combien d’octets est codée une couleur Web ?
réponse attendue
Le code hexadécimal
#FF0000
est composé de trois paires de chiffres hexadécimauxFF
,00
et00
soit trois octets. -
En déduire le nombre de couleurs Web disponibles.
réponse attendue
Trois octets correspondent à 3 \times 8 = 24 \text{ bits}. Ainsi le nombre de couleurs Web disponibles est 2^{24} = 16\,777\,216. On parle par convention de 16 millions de couleurs (comprendre au moins 16 millions).
-
Déterminer les codes binaire et hexadécimal des couleurs vert (
green
) et bleu (blue
), noir (black
) et rose (pink
). Pour cela rendez-vous sur le site suivant.Convertisseur/Afficheur de couleur Web
réponse attendue
Nom Code décimal Code hexadécimal red
rgb(255,0,0)
#FF0000
green
rgb(0,128,0)
#008000
blue
rgb(0,0,255)
#0000FF
black
rgb(0,0,0)
#000000
pink
rgb(255,192,203)
#FFC0CB
-
Que représente chacun des trois octets d’un code de couleur Web ?
Réponse attendu
Chaque octet représente l’intensité d’une des trois couleurs primaires du système additif : Rouge, Vert, Bleu (RVB) en français ou Red, Green, Blue (RGB) en anglais. L’intensité de chaque couleur primaire étant codée sur un octet, elle peut prendre 256 valeurs entre 0 et 255.
-
Le nom de couleur Web
green
est associée au code décimalrgb(0,128,0)
. Ce n’est donc pas la couleur primaire du canal vert car l’intensité pour ce canal n’est pas maximum.À l’aide du convertisseur de couleur, déterminer le nom de couleur Web de la couleur primaire du canal vert.
Réponse attendue
La couleur primaire du canal vert a pour code décimal
rgb(0,255,0)
(intensité du canal vert maximum) soit#00FF00
en hexadécimal. En entrant ce code dans le convertisseur, on obtient le nom de couleurlime
qui signifie “citron vert” en anglais.lime
désigne donc le vert primaire pour les couleurs Web. -
Dans le système additif, le blanc est obtenu en mélangeant les trois couleurs primaires.
-
Sans consulter le convertisseur en ligne, en déduire les codes décimal et hexadécimal du blanc. Vérifiez ensuite votre réponse.
Réponse attendue
Pour obtenir le blanc, il suffit de choisir l’intensité maximum pour les trois couleurs primaire. On en déduit :
Nom Code décimal Code hexadécimal white
rgb(255,255,255)
#FFFFFF
-
En vous aidant de la figure, deviner les codes décimal et hexadécimal de la couleur magenta. Retourner ensuite sur le convertisseur pour vérifier votre réponse. Faire de même pour les couleurs cyan et jaune.
réponse attendue
Le magenta est obtenu en mélangeant le bleu et le rouge mais pas le vert. Pour obtenir le magenta, il suffit donc de choisir :
- l’intensité maximum pour le bleu et le rouge ;
- l’intensité minimum pour le vert.
On en déduit :
Nom de couleur Web Code décimal Code hexadécimal magenta
rgb(255,0,255)
#FF00FF
En choisissant le nom
magenta
dans le convertisseur en ligne on n’obtient bien les codes précédents.De même on obtient :
Nom de couleur Web Code décimal Code hexadécimal cyan
rgb(0,255,255)
#00FFFF
yellow
rgb(255,255,000)
#FFFF00
-
-
La couleur Web
khaki
a les codes suivants.Code décimal Code hexadécimal rgb(240,230,140)
#F0E68C
Déterminer par le calcul à la main sur le cahier la représentation binaire du code de la couleur
khaki
. Est-ce que le code obtenu est pratique à utiliser pour un être humain ?Réponse attendue
Le plus simple est d’obtenir le code binaire à partir du code hexadécimal. On convertit en binaire chaque chiffre hexadécimal.
\begin{align*} \text{F}|_{16} &= 1111|_2 & 0|_{16} &= 0000|_2 \\ \\ \text{E}|_{16} &= 14 & 6|_{16} &= 6 \\ &= 8 + 4 + 2 & &= 4 + 2 \\ &= 1110|_2 & &= 0110|_2 \\ \\ 8|_{16} &= 8 & \text{C}|_{16} &= 12 \\ &= 1000|_2 & &= 8 + 4 \\ & & &= 1100|_2 \\ \end{align*}On en déduit : Ce n’est clairement pas pratique pour un être humain d’utiliser le code binaire pour les couleurs Web !
Exercice 9. Adresses IP
Les adresse IP (pour Internet Protocol) permettent d’identifier de manière unique des ordinateurs et périphériques sur un même réseau utilisant l’Internet Protocol.
Voici un exemple d’adresse IP selon l’ancien standard IPv4 donnée décimal
142.250.74.238
Voici un autre exemple d’adresse IPv4 donnée cette fois-ci en hexadécimal. Remarquez que les paires de chiffres hexadécimaux sont séparés par des points.
AC.10.FE.01
-
Sur combien d’octets est codée un adresse IPv4. En déduire le nombre d’adresses IPv4 différentes possibles.
Réponse attendue
Chaque paire de chiffres hexadécimals correspond à un octet. Une adresse IPv4 est donc codée sur 4 octets soit 4 \times 8 = 32 bits. Il y a donc 2^{32} = 4\,294\,967\,296 soit environ 4{,}3 milliards d’adresses.
-
Convertir en décimal l’adresse IPv4
AC.10.FE.01
. Pour cela, il faut convertir séparément chaque octet.Réponse attendue
\begin{align*} \text{AC}|_{16} &= \text{A} \times 16 + \text{C} \times 1 \\ &= 10 \times 16 + 12 \\ &= 172 \\ \\ 10|_{16} &= 1 \times 16 + 0 \times 1 \\ &= 16 \\ \\ \text{FE}|_{16} &= \text{F} \times 16 + \text{E} \times 1 \\ &= 15 \times 16 + 14 \\ &= 254 \\ \\ 01|_{16} &= 1 \end{align*}Remarque. On pouvait deviner immédiatement que \text{FE}|_{16} = 254. En effet \text{FE}|_{16} = \text{FF}|_{16} - 1 et \text{FF}|_{16} = 255.
Donc l’adresse IP
AC.10.FE.01
a pour représentation décimale172.16.254.1
. -
On s’intéresse maintenant à l’adresse IPv4
142.250.74.238
.-
Qui se cache derrière cette adresse ? À quel lieu cette adresse est-elle associée ?
Réponse attendue
En entrant directement cette adresse dans la barre d’adresse d’un navigateur Web on atterit sur la page d’accueil du de Google dont l’adresse symbolique est
www.google.com
.La page du site LookIP.net dédiée à cette adresse indique le lieu associé aux État-Unis qui correspond à la localisation de serveurs de Google.
-
Convertir cette adresse en hexadécimal.
Réponse attendue
On traite séparément chaque octet. On procède par division successives.
-
octet 1. 142
Donc 142 = 8\text{e}|_{16}.
-
octet 2. 250
Pour cet octet on pouvais remarquer que 250 = 255 - 5 or 255 = \text{ff}|_{16}. Donc :
-
octet 3. 74
Donc 74 = 4\text{a}|_{16}.
Cet octet ayant une valeur relativement faible, on pouvait simplement poser le calcul comme suit :
\begin{align*} 74 &= 64 + 10 \\ &= 4 \times 16 + 10 \\ &= 4\text{a}|_{16} \\ \end{align*} -
octet 4. 238
Donc 238 = \text{ee}|_{16}.
Donc l’adresse
142.250.74.238
s’écrit en hexadécimal8E.FA.4A.EE
. -
-
-
Le nombre d’adresses IPv4 est devenue insuffisant en 2011 : toutes les adresses encore non utilisées ont été distribuées aux cinq registres Internet Régionaux qui se répartissent les adresses à l’échelle mondiale. Avec l’explosion de la croissance d’Internet et l’Internet des objets (IoT pour Internet of Things), le nombre d’adresses disponibles s’est rapidement épuisé. Pour remédier à la situation, l’IETF a publié une nouvelle norme IPv6. Avec cette nouvelle norme les adresses IP sont codées sur 128 bits. IPv6 remplace progressivement IPv4. En 2022, le taux d’implémentation en France était de plus de 75%, à l’échelle mondiale il était estimé à environ 40%.
-
Sur combien d’octets est codée une adresse IPv6 ?
Réponse attendue
Une adresse IPv6 est codée sur 128 bits soit 128/8 = 16 octets.
-
Combien d’adresses IPv6 différentes sont possibles ?
Réponse attendue
Une adresse IPv6 est codée sur 128 bits. Donc il y a 2^{128} \simeq 3{,}4 \times 10^{38} adresses IPv6 différentes possibles. Ce nombre astronomique correspond à cent millions de fois le nombre de bactéries sur Terre. Autrement dit chaque bactérie terrienne pourraît avoir cent millions d’appareils connectés. Une autre façon d’envisager ce nombre est de considérer que le corps humain contient environ 10^{28} atomes. Le nombre d’humains étant proche de 10 milliards, cela signifie que chaque humain pourraît posséder autant d’objets connectés qu’il y a d’atomes dans son propre corps !
Conclusion : ça devrait suffire !
-