Aller au contenu

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.

  1. 10011|_2
  2. 1110101|_2
Correction du 1.
\begin{align*} 10011|_2 &= 2^4 + 2^1 + 2^0 \\ &= 16 + 2 + 1 \\ &= 19 \end{align*}
Correction du 2.
\begin{align*} 1110101|_2 &= 2^6 + 2^5 + 2^4 + 2^2 + 2^0 \\ &= 64 + 32 + 16 + 4 + 1 \\ &= 117 \end{align*}
Exercice 3. Du décimal vers le binaire

Déterminer la représentation binaire des nombres suivants.

  1. 48
  2. 79
Correction du 1.
  • Méthode 1. Par soustractions successives

  • Méthode 2. Par divisions successives

    Donc 48 = 110000|_2.

Correction du 2.
  • Méthode 1. Par soustractions successives

  • Méthode 2. Par divisions successives

    Donc 79 = 1001111|_2.

Exercice 4. De l’hexadécimal vers le décimal

Déterminer la représentation décimale des nombres suivants.

  1. 2\text{e}|_{16}
  2. 1\text{c}3|_{16}
  3. \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.
\begin{align*} 2\text{e}|_{16} &= 2 \times 16^1 + \text{e} \times 16^0 \\ &= 2 \times 16 + 14 \times 1 \\ &= 32 + 14 \\ &= 46 \end{align*}
Correction du 2.
\begin{align*} 1\text{c}3|_{16} &= 1 \times 16^2 + \text{c} \times 16^1 + 3 \times 16^0 \\ &= 1 \times 256 + 12 \times 16 + 3 \times 1 \\ &= 256 + 192 + 3 \\ &= 451 \end{align*}
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.

  1. 193
  2. 154
  3. 171
  4. 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.

  1. 1011100|_2
  2. 111011|_2
  3. 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.

\begin{align*} 101|_2 &= 4 + 1 & 1100|_2 &= 8 + 4 \\ &= 5 & &= 12 \\ &= 5|_{16} & &= \text{c}|_{16} \end{align*}

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.

\begin{align*} 11|_2 &= 2 + 1 & 1011|_2 &= 8 + 2 + 1 \\ &= 3 & &= 11 \\ &= 3|_{16} & &= \text{b}|_{16} \end{align*}

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.

  1. \text{a}5|_{16}
  2. \text{d}7|_{16}
  3. 2\text{f}|_{16}
  4. \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.

\begin{align*} \text{a}|_{16} &= 10 & 5|_{16} &= 5 \\ &= 8 + 2 & &= 4 + 1 \\ &= 1010|_2 & &= 0101|_2 \\ \end{align*}

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.

\begin{align*} \text{d}|_{16} &= 13 & 7|_{16} &= 7 \\ &= 8 + 4 + 1 & &= 4 + 2 + 1 \\ &= 1101|_2 & &= 0111|_2 \\ \end{align*}

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.

\begin{align*} \text{f}|_{16} &= 1111|_2 \text{ (cf. correction du 3.)} \\ \\ \text{e}|_{16} &= \text{f}|_{16} - 1 \\ &= 1111|_2 - 1 \\ &= 1110|_2 \end{align*}

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

  1. 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écimaux FF, 00 et 00 soit trois octets.

  2. 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).

  3. 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

  4. 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.

  5. Le nom de couleur Web green est associée au code décimal rgb(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 couleur lime qui signifie “citron vert” en anglais. lime désigne donc le vert primaire pour les couleurs Web.

  6. Dans le système additif, le blanc est obtenu en mélangeant les trois couleurs primaires.

    1. 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

    2. 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

  7. 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

  1. 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.

  2. 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écimale 172.16.254.1.

  3. On s’intéresse maintenant à l’adresse IPv4 142.250.74.238.

    1. 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.

    2. 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écimal 8E.FA.4A.EE.

  4. 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%.

    1. 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.

    2. 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 !