Objectifs pédagogiques :
✓ Passer de la représentation d’une base (2, 10, 16) dans une autre.
✓ Évaluer le nombre de bits nécessaires à l’écriture en base 2 d’un entier, de la somme ou du produit de deux nombres entiers. Utiliser le complément à 2.
Pourquoi une machine code-t-elle les informations avec des 0 et des 1 ?
Le microprocesseur et la mémoire d’un ordinateur, d’une tablette ou d’un smartphone sont constitués de transistors : ces composants électroniques fonctionnent, en mode commuté, comme des interrupteurs : soit ils laissent passer le courant (état logique 1), soit ils ne le laissent pas passer (état logique 0). C’est pour cette raison technologique que toutes les informations (chiffres, nombres, lettres, textes, sons, images, vidéos …) sont codées dans les machines sous la forme d’une succession de 0 et de 1.
Document 1 : un appui sur la touche Z produit une suite de 0 et de 1 dans les circuits électroniques d’un ordinateur
Microprocesseur Intel Core i9 7980 XE © (Fin 2017)
Épaisseur de gravure : 14 nm Processeur : 64 bits
Nombre de cœurs : 18 (36 threads)
Fréquence : 2,60 GHz (turbo jusqu’à 4,2 GHz) Cache : 24,75 MB
Bus : 4 x 8 GT/s
Enveloppe thermale : 165 W
Source : site d’Intel ©
Les microprocesseurs de nouvelle génération contiennent sur une surface de quelques mm2 plusieurs milliards de transistors gravés par photolithographie.
Les fondeurs asiatiques fabriquent en ce moment même les puces A12, gravées en 7 nanomètres utilisées par exemple sur les
« iPhone » ©. Ceux de 2020 seront quant à eux équipés des puces du taïwanais TSMC © gravées en 5 nm ! De son côté le sud-coréen Samsung © a annoncé récemment la construction d’ici 2022 d’une usine permettant de fabriquer des puces gravées en 3 nm ! Chaque transistor fera 10 à 15 atomes de largeur et sera 30 000 fois plus fin qu’un cheveu !
Pour arriver à de telles finesses de gravures, les fabricants (fondeurs) de puces doivent investir des sommes colossales dans des usines ultramodernes devant respecter un cahier des charges très contraignant : salle blanche sans poussière, sans vibration, sans variation de température ou d'humidité. Le fondeur taïwanais TSMC © vient ainsi d’annoncer un investissement de 25 milliards de dollars pour sa nouvelle usine permettant de produire industriellement des microprocesseurs gravés en 5 nm !
Plus la gravure des puces est fine, plus le nombre de transistors par unité de surface est grand, plus la puissance de calcul est importante et moins le microprocesseur chauffe.
Source : L’express – Laurent Alexandre – 12 / 07 / 2018 Document 2 : la course à la finesse de gravure des microprocesseurs
Codage des nombres entiers naturels et relatifs
1
0 1 1
0 1
0
Etat logique
Temps horloge
Début
Z
FinCode ASCII du caractère Z :
Décimal : 90 Binaire : 1011010
</>
01110
La gravure des transistors employant la technologie Tri-Gate a révolutionné depuis 2011 les performances des microprocesseurs. Pourquoi ces transistors sont-ils qualifiés de 3D et pourquoi ont-ils trois portes ? On comprend mieux en regardant les images, photographies ou schémas publiés par Intel ©. Structure fondamentale des processeurs et des mémoires, le transistor peut être vu comme un interrupteur, ou une porte, qui laisse ou non passer le courant. Celui-ci arrive d'un côté (la source) et ressort ou non de l'autre côté (le drain) selon l'état du « bouton » de commande (la grille). Ces éléments sont aujourd'hui gravés sur une surface et chacun n'a qu'une épaisseur très faible.
Au fil des générations et des progrès de la miniaturisation, ces gravures se font de plus en plus fines et aux dimensions obtenues aujourd'hui apparaissent des fuites de courant électrique. Les portes ferment mal : à l'état « 0 », un peu d'électricité passe quand même. Elles sont aussi trop étroites : à l'état « 1 », le débit de courant est faible. Ces contraintes se traduisent par une consommation plus élevée et une diminution de la vitesse maximale (mesurée en nombre de fois par seconde que la porte peut s'ouvrir et se fermer).
Cette nouvelle structure, à laquelle les ingénieurs réfléchissent depuis déjà une dizaine d'années, pour les transistors ou pour les processeurs, a pour première conséquence de réduire la surface d'un transistor, ce qui diminue l'encombrement de la puce. Elle conduit aussi, nous explique Intel, à un meilleur contact électrique, ce qui réduit les pertes et augmente l'efficacité. À l'état off, le courant ne passe vraiment plus (la porte ferme bien) et à l'état on elle laisse passer davantage de courant (la porte ouverte est plus large).
Source : Intel © et Futura Tech © Document 3 : du transistor 2D au transistor 3D (2011)
Il existe deux types de transistor bipolaire : NPN et PNP. En mode commuté, l’application d’un courant iB sur la base
❶ permet de commander le passage ou pas du courant entre le collecteur ❷ et l’émetteur ❸. Le transistor se comporte alors soit comme un interrupteur fermé (état logique 1), soit comme un interrupteur ouvert (état logique 0). C’est donc le comportement des transistors en mode commuté qui explique pourquoi une machine code et décode les informations sous la forme de suites de 0 et de 1. Dans les microprocesseurs et la RAM, les transistors sont miniaturisés et ont une taille dont l’ordre de grandeur est de 10 nm.
Document 4 : principe de fonctionnement d’un transistor bipolaire en mode commuté
Les machines manipulent l’information sous la forme de suites de nombres composées uniquement par les chiffres 0 ou 1 appelés bits. On dit qu’une machine travaille dans un système de numération à base 2 appelé système binaire. En informatique, la technologie des supports de stockage de l’information (mémoire, disque dur, SSD…) impose que les informations soient stockées sous la forme d’octets. Un octet est un multiplet de 8 bits codant une information. Dans ce système de codage, un octet permet de représenter 28 nombres, soit 256 valeurs différentes (de 0 à 255). Un octet permet de coder des valeurs numériques ou jusqu'à 256 caractères alphanumériques différents.
Le terme octet est couramment utilisé comme unité de mesure en informatique (symbole : o) pour indiquer la capacité de mémorisation des mémoires (vive RAM ou morte ROM, capacité des périphériques de stockage, etc.).
À cette fin, on utilise couramment des multiples de l'octet, comme le kilooctet (Ko), le mégaoctet (Mo), le gigaoctet (Go) ou le téraoctet (To).
Cette unité permet aussi de quantifier la rapidité de transfert d'informations en octets par seconde (ou ses multiples : Ko/s, Mo/s, etc.).
Source : Wikipédia © Document 5 : l’octet, unité de stockage des informations en informatique
N P N
P N P
❶ Base
❷ Collecteur
❸ Emetteur
❶
❷
❸
❶
❷
❸
❷
❸
❷
❸
❷
❸
❷
❸ Modèle équivalent d’un transistor en mode commuté
iB = 0 iB≠ 0
❶ ❶
❷ ❷
❸ ❸
iB iB
iB = 0 iB≠ 0
Etats logiques : 0 1 0 1
À la suite des travaux sur les semi-conducteurs, le transistor a été inventé le 23 décembre 1947 par les Américains John Bardeen, William Shockley et Walter Brattain, chercheurs des Laboratoires Bell. Ces chercheurs ont reçu pour cette invention le prix Nobel de physique en 1956.
Q1. Quel composant électronique est à la base du fonctionnement d’un microprocesseur ou de la RAM ?
Q2. Sous quelle forme sont codées les informations (nombres, textes, sons, images, vidéos…) dans une machine (ordinateur, smartphone, tablette …) ?
Q3. Quel est l’ordre de grandeur de la finesse de gravure des microprocesseurs actuels ?
Q4. Pourquoi les fondeurs de microprocesseur recherchent-ils une finesse de gravure de plus en plus petite ? Q5. Qu’est-ce que le code ASCII ?
Q6. Qu’est qu’un bit ?
Q7. Combien de valeurs entières peut-on stocker dans 2 bits, 3 bits, n bits ? Q8. Convertir en binaire les 10 chiffres (0 à 9) de la base 10.
Q9. Quel est l’unité de stockage des informations en informatique ? De combien de bits est-elle composée ?
Entre 1965 et 2017, la loi de Moore a prédit que le nombre de transistors présents dans un microprocesseur double environ tous les 18 mois.
Du décimal au binaire (et vice-versa)
Nous utilisons dans la vie quotidienne, le codage des nombres entiers utilise la base 10. Rappelons que, l’écriture d’un nombre entier du type n = (2019)10 (base 10) signifie que :
n = 9 × 100 + 1 × 101 + 0 × 102 + 2 × 103
Q10. Soit n = (110)2 un nombre entier positif en base 2. Par analogie avec la décomposition décimale rappelée ci- dessus, écrire n en base 10.
Q11. Même question avec n = (1101)2.
Un octet est un mot binaire composé de 8 bits. Par exemple le mot 11001111 est codé sur un octet. L’octet est l’unité de mesure associée au codage de l’information en informatique.
Q12. Quelle est la valeur du plus grand nombre entier que l’on peut coder sur un octet ? Q13. Combien de nombres entiers peut-on coder sur un octet ?
Document 6 : comment transformer un nombre décimal en un nombre binaire ?
Q14. Déterminer l’écriture en base 2 du nombre n = (2019)10. Q15. Même question avec n = (256)10.
Q16. Que se passe-t-il lorsqu’on multiplie par 2 un nombre écrit en base 2 ?
L’hexadécimal
Le système hexadécimal est un système de numération positionnel en base 16. Il utilise ainsi 16 symboles, en général les chiffres arabes (0 à 9) pour les dix premiers chiffres et les lettres (A à F) pour les six suivants.
Le système hexadécimal est utilisé notamment en électronique numérique et en informatique car il est particulièrement commode et permet un compromis entre le code binaire des machines et une base de numération pratique à utiliser pour les ingénieurs. En effet, chaque chiffre hexadécimal correspond exactement à quatre chiffres binaires (ou bits), rendant les conversions très simples et fournissant une écriture plus compacte.
Source : Wikipédia ©
Document 7 : le système de numération hexadécimal
Comme on peut le remarquer sur le document 7, le plus grand chiffre en hexadécimal est F, et il correspond à 15 en décimal et 1111 en binaire : F est donc encodé sur 4 bits ((F)16 = (1111)2).
Pour convertir un nombre binaire en base 16, on regroupe les bits 4 à 4, chaque groupe donnant un chiffre hexadécimal. À l'inverse, passer d'un nombre hexadécimal à sa représentation binaire se fait en remplaçant chaque chiffre pour son équivalent sur 4 bits. Ainsi :
(11011001)2=(1101 1001)2=(D9)16, tandis que (7F)16 = (0111 1111)2= (01111111)2 .
Attention, si le nombre binaire de départ n'a pas un nombre de bits multiple de 4, il faut ajouter des zéros en tête (ce qui ne change pas sa valeur) afin de pouvoir les regrouper 4 par 4.
Q17. Convertir (101111011001)2 en base 16.
Q18. Convertir (111011)2 en base 16.
Q19. Convertir (1A3E)16 en base 2.
Pour convertir un nombre décimal en hexadécimal, la méthode est similaire au binaire, sauf que cette fois on divise par 16.
Exemple : Convertir (497)10 en base 16.
497 16 (497)10 = (1F1)16
1 31 16 15 1 16 1 0
Q20. Convertir (2019)10 en base 16.
Pour convertir un nombre hexadécimal en décimal, Le principe est le même que pour la conversation "binaire en décimal" sauf qu'au lieu d'utiliser des 2n on utilise des 16n.
Exemple : (12B7)16 = 1×163 + 2×162 + 11×161 + 7×160=1×4096 + 2×256 + 11×16 + 7=4096 + 512 + 176 + 7 = 4791.
Q21. Convertir (1B87)16 en base 10.
Représentation binaire d’un entier relatif : complément à deux
Nous avons précédemment vu comment représenter les entiers naturels, nous allons maintenant nous intéresser aux entiers relatifs (entiers naturels auquel on adjoint un signe + ou -). En informatique on les appelle également les entiers signés.
La première idée qui pourrait venir à l'esprit est, sur un nombre comportant n bits, d'utiliser 1 bit pour représenter le signe et n-1 bit pour représenter la valeur absolue du nombre à représenter. Le bit de signe étant le bit dit de « poids fort » (c'est à dire le bit le plus à gauche), ce bit de poids fort serait à 0 dans le cas d'un nombre positif et à 1 dans le cas d'un nombre négatif.
Exemple : on représente l'entier 5 sur 8 bits par 00000101, -5 serait donc représenté par 10000101.
Q22. En utilisant la méthode décrite ci-dessus, représenter -15 (représentation sur 8 bits).
Il existe un énorme inconvénient à cette méthode : l'existence de deux zéros, un zéro positif (00000000) et un zéro négatif (10000000) ! Ce problème est, pour plusieurs raisons qui ne seront pas développées ici, rédhibitoire. Nous allons donc devoir utiliser une autre méthode : le complément à deux.
> Complément à deux
Avant de représenter un entier relatif, il est nécessaire de définir le nombre de bits qui seront utilisés pour cette représentation (souvent 8, 16 , 32 ou 64 bits).
Prenons tout de suite un exemple : déterminons la représentation de -12 sur 8 bits.
Etape 1 : Commençons par représenter 12 sur 8 bits (sachant que pour représenter 12 en binaire seuls 4 bits sont nécessaires, les 4 bits les plus à gauche seront à 0) : 00001100
Etape 2 : Inversons tous les bits (les bits à 1 passent à 0 et vice versa) : 11110011
Etape 3 : Ajoutons 1 au nombre obtenu à l'étape précédente (les retenues sont notées en rouge).
La représentation de -12 sur 8 bits est donc : 11110100
Comment peut-on être sûr que 11110100 est bien la représentation de -12 ?
Nous pouvons affirmer sans trop de risque de nous tromper que 12 + (-12) = 0, vérifions que cela est vrai pour notre représentation sur 8 bits.
Dans l'opération ci-dessus, nous avons un 1 pour le 9e bit, mais comme notre représentation se limite à 8 bits, il nous reste bien 00000000.
Q23.En utilisant le complément à 2, représentez -15 (représentation sur 8 bits).
Il faut noter qu'il est facile de déterminer si une représentation correspond à un entier positif ou un entier négatif : si le bit de poids fort est à 1, nous avons affaire à un entier négatif, si le bit de poids fort est à 0, nous avons affaire à un entier positif.
Q24. Représentez sur 8 bits l'entier 4 puis représentez, toujours sur 8 bits, l'entier -5. Additionnez ces 2 nombres (en utilisant les représentations binaires bien évidemment), vérifiez que vous obtenez bien -1.
Q25. Quel est le plus petit entier négatif que l'on peut représenter sur 8 bits ? Q26. Quel est le plus grand entier positif que l'on peut représenter sur 8 bits ?
Pour Q25 vous avez dû normalement trouver 10000000 (soit -128) et 01111111 (soit 127) pour Q26. Plus généralement, nous pouvons dire que pour une représentation sur n bits, il sera possible de coder des valeurs comprises entre -2n-1 et +2n-1 – 1.
Q27. Quelles sont les bornes inférieures et supérieure d’un entier codé sur 16 bits.
Un processeur 64 bits est un processeur dont la largeur des registres est de 64 bits sur les nombres entiers relatifs. Il est donc capable de réaliser des opérations sur des nombres relatifs très grands (ou très petits). Nous verrons dans la prochaine activité que la taille finie des registres implique que certains calculs faisant intervenir des réels seront entachés d’une erreur compte tenu de l’approximation des flottants.
Ressource : convertisseur en ligne décimal, hexadécimal, binaire.