Notions d'architecture des ordinateurs (A.O.)

Université de La Réunion
Cours préparé par Dr Philippe Martin

http://www.phmartin.info/cours/ao/
(→ supports de cours, TDs, exemples de QCM, corrigés, ...)
Ce document est la version "slides" de la 1ère partie. Sauf en cas d'ajout, toute différence
avec la version PDF est une erreur typographique : si vous en voyez, merci de les signaler !

Objectif
L'objectif de ce cours est
de faire connaître à ses étudiants      
- les composants et principes
    majeurs de fonctionnement
    d'un ordinateur ou d'un réseau
    d'ordinateurs, depuis
    l'électronique (transistors, ...)
    jusqu'à la programmation,
- les critères principaux
    d'évaluation de performance
    (capacité, rapidité, ...)
- les termes français et anglais
    relatifs à tout ceci.
Pile des objects/processus nécessaires au
traitement automatique de l'information :
- programmes applicatifs
- systèmes d'exploitation et réseaux
    (ex partie 5 du cours)
- langages, interpréteurs
    et compilateurs (partie 2)
- microprocesseurs (parties 2 et 4)
- circuits (partie 3) et
    encodage de l'information (partie 1)
- portes logiques (parties 3 et 4)
- diodes et transistors (partie 4)
Contenu
Partie 1.  Introduction, 1) Définitions générales, 2) Historique, 3) Numération
                 (site offrant des informations complémentaires sur cette Partie 1)
Partie 2.  Architecture de Von Neuman: CPU, bus, mémoires, ...
Partie 3.  Circuits logiques
Partie 4.  Composants électroniques; parallélisme; entrées/sorties
Références
Une bonne part des graphiques de ce cours reprennent ceux du livre "Architecture et technologie des ordinateurs" de P. Zanella, Y. Ligier et E. Lazard (616 pages ; ISBN: 978-2-10-078459-2 ; dernière édition : 2018). La plupart des définitions de ce cours sont dérivées de ce livre et, souvent, centralisent des informations éparses dans ce livre (afin de simplifier l'accès à ces informations et d'accélérer la compréhension des notions définies). La bibliothèque universitaire contient plusieurs livres sur l'Architecture des Ordinateurs, e.g. quelques uns de Philippe Darche. Ce cours est un préalable nécessaire à de nombreux autres cours → il nécessite de comprendre beaucoup de termes (ceux en caractères gras) et les techniques de résolution de problèmes vus en cours et TD.

Organisation du cours

Ce cours est organisé comme une suite intuitive de définitions
plus de précision et facilite la compréhension et mémorisation → pour ces buts, ces définitions doivent être relues périodiquement (les évaluations nécessitent une bonne compréhension, toute tentative de "par-cœur" est contre-productive) → ce cours prépare à de nombreux autres cours et n'a lui-même pas d'autres pré-requis que des notions mathématiques élémentaires (cf. page 3).
Vous (étudiant) devez venir à chaque TD en ayant étudié le cours (ceci sera testé),
    en ayant préparé le TD (i.e., avoir tenté de résoudre les exercices),
et avec une version (papier ou sur ordinateur) du cours et du TD.
Si ce n'est pas le cas, l'intervenant pourra vous exclure du TD.
Pour chaque définition ou technique que vous ne comprenez pas, vous devez
  • tout d'abord chercher à comprendre par vous-même (via un dictionnaire, le
    Web ou d'autres passages du cours) puis en posant des questions (dès que
    possible mais pas par e-mail ; pour des questions sur un CM, faites-le avant
    le début de la "petite évaluation de début de TD" sur ce CM) ;
  • signaler ce que vous pensez être une ambiguïté ou autre problème dans
    le cours (→ points bonus).

Ceci fait partie du rôle de l'étudiant car, souvent, un enseignant ne peut
deviner ce que l'étudiant ne comprend pas si celui-ci ne l'exprime pas.

Le rôle d'un enseignant est
  1. de vous aider à apprendre (→ donc de vous fournir un cours précis et
    structuré et de répondre à vos questions),
  2. de vérifier que vous apprenez suffisamment, et
  3. de vous entraîner à répondre – ou, plus généralement, exposer des
    informations – de manière précise, organisée et convaincante.
Plus de détails (et leurs fondements) sont dans la page
http://www.phmartin.info/cours/devoirsEnseignantEtudiant.html

Travail personnel

Chaque heure de cours ou de TD doit entraîner entre 1/2 heure et 4h de travail personnel
(4h selon la fin de ce document de l'UFR ST pour les licences), e.g. : - relectures+auto-tests de CMs (pour optimiser la compréhension et la rétention, relire le soir même, puis 2 ou 3 jours après, puis la semaine suivante) et des pages Web pointées (vous devez avoir compris leur contenu !), recherches dans un dictionnaire de chaque mot non compris, etc. - préparation des TDs, compréhension des corrigés, entraînement aux QCMs en temps limité, etc.
Vous devez maîtriser les notions mathématiques élémentaires d'un bac général
    incluant une spécialité en mathématiques (et la spécialité NSI ; ce sont des pré-requis
    indiqués sur Parcoursup pour cette Licence d'informatique), au minimum
    pour les 3 points indiqués ci-dessous
(avant les TD, (re-)voyez les notions
    sous-jacentes, e.g. les exponentielles sur Wikipedia ou sur Wikiversity) :
  • ax  *  ay  =  ax + y         et donc aussi     ax / ay  =  ax - y
  • log2(2x) = 2log2(x) = x         racineCarré(x) = squareRoot(x) = sqrt(x) = x1/2
  • la/les règle(s) de proportionnalité (règle de 3, ...) ; testez-vous sur les
    problèmes listés dans https://fr.wikipedia.org/wiki/Règle_de_trois.
Question Wooclap :
effectuez là en allant sur la page Moodle du cours puis, dans cette page Moodle, en cliquant sur "ao1wooclap" (si Wooclap à un problème, une version sur Moodle sera utilisée). Quel est le résultat de ( ( sqrt(log2(216)) / 2-1 ) / 20) * 23*-2 ? (remarque : les questions sur Wooclap – dont cette question – peuvent être légèrement différentes de celles qui sont affichées dans les support de cours)
Notes / rappels :
- chaque question Wooclap vous permet d'évaluer tout de suite si vous n'avez pas compris une notion, n'êtes pas à niveau, ... ; votre succès ou pas à une question a extrêmement peu d'influence sur votre note finale - dans ce cours (CMs, TDs, tests), les calculatrices sont inutiles et interdites !

1. Définitions générales

Dans ce cours, la possibilité de contracter le corps d'une définition a au moins 2 avantages.
  1. Cela permet un apprentissage similaire à l'apprentissage par Flashcards :
    1. essayer de retrouver la définition relative d'un terme est non seulement un moyen plus efficace de la mémoriser que de relire la définition mais aussi un moyen de tester sa compréhension (et donc mémorisation) de cette définition (encore une fois : toute tentative de "par-cœur" est contre-productive) ;
    2. si, lorsqu'une définition est bien sue/comprise, elle est "dé-contractée",
      celles qui restent contractées sont celles qu'il reste à re-réviser.
  2. Cela aident les étudiants qui ont du mal à se focaliser sur une portion de texte
    si celle-ci a du texte autour, même si le texte est structuré
    (une analogie pourrait être "avoir du mal à se focaliser sur un seul arbre dans une forêt")
    → la contraction de texte leur évite
         - d'avoir à utiliser du papier pour masquer le texte autour de la portion en question, ou
         - de copier-coller cette portion dans un autre fichier.

E.g. (latin: exempli gratia) :
"par exemple".

I.e. (latin: id est) :
"c'est-à-dire".
* : "multiplie"
(dans ce cours, "multiplie" sera représenté par "*",
  et "*" représentera toujours "multiplie").
Information :
données numériques (e.g., 314) ou
symboliques (e.g., Vrai, Très chaud, Rouge, "Un chat est sur une table, ...),
e.g., données multimédia.
Numérisation :
représentation d'une donnée avec un nombre (i.e. un code numérique ou non numérique).

Méthodes de numération :
méthodes pour écrire des nombres.
Informatique [I.T. : Information Technology] :
(terme issu de la contraction de "information" et "automatique")
science du traitement de l'information.

Ordinateur [computer] :
machine capable d'exécuter des programmes.
Programme :
suite d'instructions arithmétiques ou logiques ou de contrôle
(ces dernières définissent l'ordre d'exécution d'autres instructions).

Logiciel [software] :
programme ou ensemble de programmes.
Système informatique [information system] :
système aidant la réalisation de tâches/décisions et composé de
matériels [hardware] (ordinateur, périphériques, ...), logiciels [software],
information (données ou bien connaissances) et personnes.

1. Définitions générales

Chiffres [digit] :
symboles formant les nombres, e.g., 28 est formé des symboles 2 et 8.
Représentation en base 10 (décimale) :
avec 10 symboles différents (e.g., chiffres de 0 à 9).
Représentation en base 2 (binaire) :
avec 2 symboles différents
(e.g., 0 et 1, vrai et faux, ouvert et fermé, 0 volt et 5 volts).
Avantages :
- de nombreux systèmes ont deux états   (en électronique, optique, ...)
- facile à distinguer et à manipuler.
Bit (contraction de "binary digit") : 0 ou 1.
N'utilisez pas l'abréviation "b" car "octet" [byte] (8 bits) est abrévié par
"o", "B" ou "b" (d'où l'ambiguïté).   Dans ce cours, "bit" n'est jamais abrévié.
Octet [byte] :
ensemble de 8 bits.   Abréviation : o(ctet) ou b(yte).
Dans ce cours, "bit" n'est jamais abrévié.
Implémenter (une idée/technique) :
réaliser un artefact (machine ou programme)
mettant en œuvre cette idée/technique.
Incrémenter (d'un nombre N une variable ou un compteur) :
ajouter N à cette variable ou à ce compteur.

2. Historique

Vous n'avez pas à vous souvenir des dates exactes (ce serait du "par cœur")
mais vous devez avoir compris ce à quoi chaque terme réfère.

2. Historique

2. Historique

2. Historique

2. Historique

2. Historique et analyse


20ème siècle : siècle de la physique, chimie, ... et de l'informatique
21ème siècle : siècle de la physique, biologie, ... et de l'informatique ;
      ordinateur électronique+photonique+quantique+biologique ?
À lire : "Informatique naturelle", "Ordinateur biologique", e.g., à ADN [1, 2]


1965 : Gordon Moore remarque que "le nombre de transistors intégrables
        sur une puce de circuit intégré double tous les 18 (à 24) mois"
loi de Moore ("loi/observation empirique" : vérifiée de 1971 à 2021) :
la puissance des nouveaux microprocesseurs (pas celle de leurs CPUs)
et la capacité des nouvelles mémoires
doublent tous les 18 mois au plus (entre 12 et 18 mois)
. La progression s'affaiblit et cette loi est prévue ne plus être vraie en 2025
(mais, pour les évaluations, c'est l'énoncé ci-dessus qui est à retenir).


Allez sur Wooclap (depuis "ao1wooclap" sur la page Moodle du cours)
pour la question d'évaluation suivante (1 seule réponse à sélectionner) :
Selon la loi de Moore, la puissance des microprocesseurs ...
A) quadruple tous les trois ans (environ / au plus)
B) quintuple tous les trois ans (environ / au plus)
C) double tous 9 mois (environ / au plus)
D) triple tous 18 mois (environ / au plus)
E) aucune des 4 dernières réponses n'est juste

Plan de la section 3 (Numération) de la partie 1


3.1. Définitions (rappel)

3.2. Codes numériques
3.2.1. Entiers positifs
3.2.1.1. Changement de base
3.2.1.2. Énumération
3.2.1.3. Addition
3.2.1.4. Unités
3.2.2. Entiers signés en binaire
3.2.3. Nombres fractionnaires en binaire

3.3. Codes non numériques  (pour décimaux, caractères, ...)
        ("non numérique" dans le sens "non basé sur la numération positionnelle")
3.3.1. Codes pour caractères
3.3.2. Sérialisation des caractères : endianisme

3.4. Avantages du numérique par rapport à l'analogique




Sur Wooclap, pour évaluer votre compréhension des notions du plan ci-dessus
    (rappel : 1 seule réponse juste) :
La numérisation est la représentation ...
A) d'un chiffre (seulement)
B) d'une donnée avec un code numérique (seulement)
C) d'une donnée avec un code numérique et non numérique
D) d'une donnée avec, possiblement, un code non numérique
E) d'une donnée avec un nombre (i.e. un code numérique ou non numérique)
F) les 2 dernières réponses sont justes

3.1. Numération – définitions (rappel)

Chiffres [digit] :
symboles principaux utilisés dans les nombres
(il existe d'autres symboles commme le point décimal ou la virgule décimale).
Numérisation :
représentation d'une donnée avec un nombre (i.e. un code numérique ou non numérique).

Méthode de numération :
méthode pour écrire des nombres.
Numération positionnelle :

la valeur d'un chiffre dépend de sa
position, chaque chiffre a un poids dans une base, e.g.,
431,0110 = 4*102 + 3*101 + 1*100 + 0*10-1 + 1*10-2
                 = 4*100 + 3*10 + 1*1 + 0*1/10 + 1*1/100
                 = 431,01 = 431,0110
431,015  = 4*52 + 3*51 + 1*50 + 0*5-1 + 1*5-2
                = 4*25 + 3*5 + 1*1 + 0*1/5 + 1*1/25
                = 100 + 15 + 1 + 0 + 0,04 = 116,04 = 116,0410
    1,012  = 1*20 + 0*2-1 + 1*2-2
                = 1*1 + 0*1/2 + 1*1/4 = 1 + 0 + 0,25 = 1,25 = 1,2510

Représentation en base 10 (décimale) :
avec 10 symboles différents (e.g., chiffres de 0 à 9).
Représentation en base 2 (binaire) :
avec 2 symboles différents (e.g., 0 et 1, vrai et faux, ouvert et fermé, 0 volt et 5 volts).
431,012 n'a aucun sens ('4' et '3' ne sont pas des symboles de la base 2).
Bit (contraction de "binary digit") :
0 ou 1.  N'utilisez pas l'abréviation "b"
car "octet" [byte] (8 bits) est abrévié par "o", "B" ou "b" (d'où l'ambiguïté).
Dans ce cours, "bit" n'est jamais abrévié.

Octet [byte] :
groupe de 8 bits. Dans ce cours, l'abréviation "B" n'est pas utilisée.

3.2.1. Codes numériques – entiers positifs

N10 = a * 10n + b * 10n-1 + ... + z * 100
Exemple : 1210 = 1*101 + 2*100
45310 = 4*102 + 5*101 + 3*100



De même :   N2  =  a * 2n + b * 2n-1 + ... + z * 20  =  N'10

E.g. :   11002  =  1*23 + 1*22 + 0*21 + 0*20  =  810 + 410 + 0 + 0  =  1210

Conversion de 1210 en 11002 :

  • 1ère méthode : décomposer en puissances de 2 (e.g., 8 = 23)
          comme dans l'exemple ci-dessus
          1210  =  810 + 410 + 0 + 0  =  1*23 + 1*22 + 0*21 + 0*20  =  11002
  • 2ème méthode : diviser par deux jusqu'à arriver à 0 et noter les restes :
          12 div 2 = 6 (reste : 0); 6 div 2 = 3 (reste : 0) ; 3 div 2 = 1 (reste : 1);
          1 div 2 = 0 (reste 1).
          Suite des restes, de droite à gauche → 11002
Vous devez utiliser la 1ère méthode : elle est plus pratique et plus générique.
    Connaissez au moins les puissances de 2, 8 et 16 suivantes :

20=1   21=2   22=4   23=8   24=16   25=32   210=1024
                    216=210+6=210*26=1024*64=65536
       2-1=0,5   2-2=0,25   2-3=0,125    2-4=0,0625
                           8-1=0,125   16-1=0,0625

3.2.1.1. Entiers positifs – changement de base

décimal    binaire    octal    hexadécimal
   0          0         0          0
   1          1         1          1
   2         10 <-      2          2
   3         11         3          3
   4        100 <-      4          4
   5        101         5          5
   6        110         6          6
   7        111         7          7
   8       1000 <-     10 <-       8
   9       1001        11          9
  10 <-    1010        12          A
  11       1011        13          B
  12       1100        14          C
  13       1101        15          D
  14       1110        16          E
  15       1111        17          F
  16      10000        20         10 <-

Cette table est à comprendre (pas à apprendre/copier → contre-productif).

Convertir en binaire de l'octal ou de l'hexadécimal
    – ou tout autre nombre d'une base b qui est une puissance de 2 –
    se fait par groupe de b bits,  en partant du bit de poids le plus faible.
Exemples, sachant que 8 = 23 (-> groupes de 3 bits) et 16 = 23  :
  1011012 = 101'1012 = 558
  1011012 = 10'11012 = 2D16
Pour convertir des nombres entre des bases puissances de 2,
il est donc souvent plus rapide de passer par le binaire.
Sur Wooclap : 223 est égal à ...

A) 118       B) 910       C) 135       D) les 3 dernières réponses (sont justes)
E) aucune des 4 réponses précédentes (n'est juste)

Sur Wooclap :   FA8216 est égal à ...

A) 7650108       B) 1752028       C) 1762028       D) 1751028       E) aucune des 4 réponses

3.2.1.2. Entiers positifs – énumération

Avec 1 bit (→ avec 1 chiffre en base 2),
on peut représenter 21 entiers :  0 et 1.
Avec 2 bits, on peut représenter
22 entiers :  002, 012, 102, 112.
Avec 3 bits, on peut représenter
23 (= 8) entiers :  0002, ... 1112.
Cf. page suivante pour 4 bits.

Mémoire de 
22bits = 4 mots
____________ 
3 = 112 → |___________|
2 = 102 → |___________|
1 = 012 → |___________|
adresse 0 = 002 → |  1er mot  |
Avec n bits, on peut représenter 2n entiers positifs
(preuve :  2n+1 bits → les 2n possibilités des n bits * les 2 possibilités du
bit supplémentaire → 2n+1 entiers → formule respectée au rang n+1)
  → 2n adresses : 2n cases mémoires ("mots") peuvent être adressées.
Exemple d'application : avec un bus/registre d'adresse de n bits, on peut
    avoir 2n adresses et donc adresser 2n "mots" (cases mémoire).

En base 10,
    avec 1 chiffre,   on peut représenter 101 entiers :  0 à 9,
    avec 2 chiffres, on peut représenter 102 entiers :  0 à 99,
    avec n chiffres, on peut représenter 10n entiers positifs :  0 à 10n - 1.
Dans une base b, avec n chiffres, on peut représenter de 0 à bn - 1.
En base 2, avec 3 chiffres, on peut représenter de 000 à
    23-1  =  710  =  78  =  1112  =  1'0002 - 1  =  108  -  1
En base 16, avec 4 chiffres, on peut représenter de 0000 à
    164-1  =  6553510  =  FFFF16  =  1111'1111'1111'11112
                                                      =  1'0000'0000'0000'00002  -  1  =  216  -  1.

Ces notions sont évaluées plus de 50 fois dans ce cours (TDs, questions, ...).
    Malgré cela, une bonne partie de vos prédécesseurs des années passées
    n'y ont pas prêtés attention et leur taux de réussite pour les questions
    relatives à ces notions est resté faible.

3.2.1.3. Entiers positifs – énumération

Comme illustré dans la page précédente, (les adresses d')une mémoire se
représente(nt) souvent avec le plus grand nombre en haut. C'est la convention
dans ce cours. Pour les tables de vérité, c'est souvent l'inverse (elles seront
utilisées dans les parties 3 et 4 du cours).

Dans les deux cas, la technique d'énumération est la même.
Ci-dessous : 5 exemples, de "avec 0 bit" jusqu'à "avec 4 bits",
                      avec les plus grands nombres en bas.
Notez que chaque exemple se construit en reprenant le précédent 2 fois
(d'où le nombre total de 2nombreDeBits entiers/lignes/... dans chaque exemple) :
une fois en le préfixant par des "0", une fois en le préfixant puis par des "1".

0 bit    1 bit    2 bits    3 bits    4 bits
          0        00        000       0000 
          1        01        001       0001
                   10        010       0010
                   11        011       0011
                             100       0100
                             101       0101
                             110       0110
                             111       0111
                                       1000
                                       1001
                                       1010
                                       1011
                                       1100
                                       1101
                                       1110
                                       1111

3.2.1.3. Entiers positifs – (é)numération

Exemples de question d'évaluation :

1) dans une base B, avec N chiffres,
         on peut représenter les entiers positifs de 0 à ...
A) BN - 1       B) BN       C) NB - 1       D) 2B       E) aucune des 4 dernières réponses
2) En base 16, avec 2 chiffres, le nombre/mot le plus grand (ou l'adresse
         la plus grande) qui peut être représenté(e) est ...
A) 256       B) 216       C) 511       D) 44 - 1       E) aucune des 4 autres réponses
Les notions liées à la numération sont suffisamment simples pour
i) être communicables/explicables via des égalités, et ii) être aussi des moyens
de communiquer des sens de l'égalité utilisée et de symboles liés à l'égalité.
Par exemple, le texte en police à chasse fixe ci-dessous pourrait être envoyé à
des "agents intelligents" (matériels ou logiciels, terriens ou extraterrestres) pour leur
leur communiquer des sens de "=", de symboles pour la numération positionnelle en
différentes bases, de symboles pour la numérotation romaine, de symboles de
groupements. Les messages envoyés par le SETI à d'éventuels extraterrestres
intelligents
, dont le message d'Arecibo et le message de Dutil et Dumas
(explication pointée par ce lien) envoyés en 1999 sont bien plus compliqués.
                     w@ =    w. =  0 =   002 =  08 = 02
                    @w@ =   .w. =  1 =   012 =  18 =    IR
                   @@w@ =  ..w. =  2 =   102 =  28 =   IIR
                  @@@w@ = ...w. =  3 =   112 =  38 =  IIIR
                         ....w. =  4 =  1002 =  48 =   IVR
                        .....w. =  5 =  1012 =  58 =    VR
      ... ...w. =      ......w. =  6 =  1102 =  68 =   VIR
    . ... ...w. =     .......w. =  7 =  1112 =  78 =  VIIR
    .... ....w. =    ........w. =  8 = 10002 = 108 = VIIIR
    .... ....w. =   .........w. =  9 = 10012 = 118 =   IXR
  ..... .....w. =  ..........w. = 10 = 10102 = 128 =    XR
. ..... .....w. = ...........w. = 11 = 10102 = 138 =   XIR
Pour montrer sa compréhension/interprétation des notions de ce texte (ce message),
un lecteur de celui-ci pourrait par exemple émettre le message suivant.
       12 = .... .... ....w. = 11002 = 1'1002 = 148 = XIIR

3.2.1.3. Entiers positifs – addition

  X    1101'10012
  Y    1001'00102
X+Y  1'0110'10112

Si les registres ou mots-mémoire d'une machine sont de
1 octet [byte] (8 bits),
comme X+Y doit normalement s'étendre sur 9 bits,
le processeur ne conserve que  0110'10112  mais
signale au programmeur un "dépassement de capacité" [overflow].



Notes : 1) dorénavant, les réponses proposées pour les questions d'évaluation
sur Moodle sont automatiquement mélangées, lorsque possible ;
2) suivant le temps restant, les questions suivantes sont à effectuer
maintenant ou au début du 1er TD.

Sur Wooclap :       (BF16 + 0001'11102) est égal à ...
A) 1110'11012       B) 1111'11012       C) 1101'11012       D) 1101'11112
E) aucune des 4 dernières réponses
Sur Wooclap :       (128 + 116) est égal à ...
A) 11112       B) 1113       C) 1116       D) 1117
E) aucune des 4 dernières réponses

3.2.1.4. Entiers positifs – unités

Pour la vitesse d'un réseau,  1 Ko (Kilo-octet) =
103 octets = 1000 octets

Pour la taille d'une mémoire, 1 Ko =
210 octets = 1024 octets = 1 Kio (kibi-octet).

De même, (cf. Wikipedia's  Préfixe binaire  et  Metric prefix) :

3.2.1.4. Entiers positifs – unités

Pour plus de détails, lisez le chapitre "La déferlante des octets" (pp. 20-27) du
"journal du CNRS No262, nov.-dec. 2012". La figure ci-dessus en est extraite.

En 2010, Eric Schmidt (PDG de Google de 2001 à 2011) affirmait :
  Tous les deux jours, nous produisons autant d'informations que
  nous en avons générées depuis l'aube de la civilisation jusqu'en 2003.

Non obligatoire de regarder : 1. vidéo sur ce qui existe physiquement à différentes échelles de grandeurs
    2. le bug de l'an 2038


Questions liées aux puissances de 2 sur Wooclap :

* Supposez que vous ayez une bande de papier-toilette de 1024 mètres de long
   et que vous puissiez la plier en deux (parties égales et parfaitement plates) 12
   fois de suite (→ ?? couches), quelle longueur obtiendriez-vous en centimètres ?
   (largeur constante ; pliures supposées parfaites : non arrondies, ...)
   Notes : 1) le record avec du papier du type "couche de papier-toilette" est bien
   de 12 fois, avec une longueur initiale de 1219m, en 2002
, par une lycéenne de
   16 ans qui trouva préalablement la formule lui permettant de calculer la
   longueur nécessaire en fonctions de l'épaisseur du papier le plus fin qu'elle
   avait trouvé ; 2) si vous pouviez plier 42 fois une feuille de papier, vous
   obtiendriez une épaisseur environ égale à la distance Terre-Lune
.

* Question(s) liée(s) à l'isopoint génétique       (pour culture : 1, 2 et 3)

3.2.2. Numération – entiers signés en binaire

Exemple :  représentation en binaire de
                    +7 (= 01112)   et de   -7 (= ????2)

Trois méthodes principales
(que nous allons voir et qui donnent des résultats différents) :


Avec ces 3 méthodes, le bit le plus à gauche est toujours
1 pour un entier négatif et 0 pour un entier positif.

3.2.2.1. Entiers signés – représentation par "signe et valeur absolue"

Le bit le plus à gauche représente le signe (0 : positif; 1 : négatif).
Les autres bits représentent la valeur absolue de l'entier signé.

Peu utilisé car avec cette méthode

De manière générale (pas seulement pour cette sous-section), une suite de
bits (ou de chiffres) ne peut être interprétée par l'homme ou la machine tant
que son type (e.g., entier, caractère(s), nombre fractionnaire avec
représentation par virgule flottante, image au format JPEG, ...) et le nombre de
bits utilisés ne sont pas précisés par ailleurs (e.g., via le typage de variables
dans programme et les sortes d'encodage utilisés par chaque machine pour
chaque type).
Dans ce cours, ces précisions sont données via le contexte (titre de la section,
sujet de l'exercice, ...) et/ou dans les indices comme ci-dessus.
Si un nombre est en base 10 ou s'il s'agit d'un entier positif, il est optionnel de
préciser cela : ce seront des précisions "par défaut".
De manière similaire, pour les entiers positifs il est inutile de préciser le
nombre de bits.
Pour les nombres négatifs, le nombre de bits sera supposé être celui impliqué
par le nombre de chiffres utilisés dans ces nombres.
Ainsi, dans les exemples ci-dessus, les parties en italique sont facultatives.

3.2.2.2. Entiers signés – représentation par complément à 2 ou à 1

Soit x un entier positif qui nécessite au moins n bits pour sa représentation en binaire,
    "bin" une fonction qui renvoie la représentation binaire d'un nombre,
    complément_à_2(x)  le complément à 2 de bin(x)
        qui peut être utilisé pour représenter -x en binaire, et
    complément_à_1(x)  le complément à 1 de bin(x)
        qui peut aussi être utilisé pour représenter -x en binaire
complément_à_2(x) =  bin(2n - x)  =  bin((2n - x - 1) + 1)
                                      =  bin(2n - 1 - x) + 1  =  complément_à_1(x) + 1

Complémenter à 1 revient à changer tous les 0 en 1, et vice versa.
Exemples sur 4 bits (résultats différents avec 3 bits ou 5 bits) :

complément_à_2(110) = complément_à_1(00012) + 1
                    = 11102(complément à 1 sur 4 bits) + 1
                    = 11112(complément à 2 sur 4 bits) 
                    = -110(complément à 2 sur 4 bits)
      //note : 11112 = 1510(entier positif) 

complément_à_2(710) = complément_à_1(01112) + 1
                    = 10002(complément à 1 sur 4 bits) + 1
                    = 10012(complément à 2 sur 4 bits)
                    = -710(complément à 2 sur 4 bits)
      //note : 10012 = 910(entier positif)

complément_à_2(810) = complément_à_1(10002) + 1
                    = 01112(complément à 1 sur 4 bits) + 1
                    = 10002(complément à 2 sur 4 bits)
                    = -810(complément à 2 sur 4 bits)
      //note : 10002 = 82(entier positif)

Pour le "complément à 2"  (complément arithmétique ; cf. notes ci-dessus),
comme pour le "complément à 1" (complément restreint ou logique),
soustraire deux termes <=> additionner le premier terme au complément
(arithmétique/logique).

3.2.2.2. Entiers signés – représentation par complément à 2 ou à 1

Exemples sur 3 bits :

décimal  signe+val.abs.  compl. à 1     complément à 2
   +4        100           100               100
   +3        011           011               011
   +2        010           010               010
   +1        001           001               001
   +0        000           000╮              000
   -0        100           111╯      +1 = (1)000
   -1        101           110       +1 =    111
   -2        110           101       +1 =    110
   -3        111           100       +1 =    101
   -4        ---(100)      ---(011)  +1 =    100

Ainsi :   -0 = 1112(complément à 1 sur 3 bits) = 0002(complément à 2 sur 3 bits)

En complément à 2 sur n bits, un dépassement au delà de n bits est
ignoré.

En complément à 1 sur n bits, un dépassement au delà de n bits est
ajouté au résultat (dépassement causé par une addition).
Plus généralement, avec n bits, n bits, en "complément à 2", on peut représenter
    des entiers signés compris entre
-(2n-1) et (2n-1-1).
Mais, avec n bits, en "signe + valeur absolue" et "complément à 1", on ne
    peut représenter que des entiers signés compris entre
-(2n-1-1) et (2n-1-1),  i.e., entre (-2n-1+1) et (2n-1-1).

Sur Wooclap :     Que représente  111112(complément à 2 sur 5 bits) ?
A) -110       B) -010       C) -1510       D) +3110
E) aucune des 4 dernières réponses

Quelle "expression sur les bits en C" calcule la puissance de deux maximum
qui divise un entier quand les entiers signés utilisent un complément à deux ?

3.2.3. Numération – nombres fractionnaires en binaire

Exemples :   0,012 =  0*20 + 0*2-1 + 1*2-2 =  0*1 + 0*0,510 + 1*0,2510 =  0,2510
                      0,12510 =  0,0012     car   ((0,125 * 2) * 2) * 2 = 1

Sur Wooclap :     0,7510 est égal à ...
A) 0,112       B) 0,34       C) 0,68       D) les 3 dernières réponses
E) aucune des 4 dernières réponses


Représentation en machine classique (pas via des "nombres universels", ni par
  codage+calcul sur des rationnels , ni par "précision-infinie|multi-précision en
  stockant les nombres via des tableaux de chiffres
→ le BigInt de JavaScript") :

Représentation en virgule flottante (suite)

Représentation des réels normalisée au format IEEE 754  →   3 choix :

  1.   sur 32 bits (8 bits pour E, 1 bit pour le signe de M, 23 bits pour |M|)

  2.   sur 64 bits (2 * plus précis : 1 bit de signe,  11 bits pour E,  52 bits pour |M|)
  3.   sur 80 bits (précision étendue).

Plus précisément, E est appelé "exposant réel". Ce qui est stocké (sur n bits)
est appelé E', l'exposant "biaisé". Généralement, E' = E + (2n/2 -1) pour que
E' soit un nombre positif (→ 1 seule méthode d'encodage). E.g., sur 8 bits, le
biais, 2n/2 - 1= 127, les valeurs possibles de E vont de -127 à 128 (→ palette
équilibrée de nombres positifs et négatifs ; cf. TD) et les valeurs possibles de
E' sont entre 0 et 255 (on dit que E' est biaisé à 127). Note : dans la correction
du TD, un biais de 128 (au lieu de 127) est utilisé, ce n'est pas usuel. Pour les
QCMs, le biais sera de 2n/2 - 1 (donc 127 lorsque E est sur 8 bits).

Quand E' est sur 11 bits, il est aussi courant qu'il soit biaisé à 1023.

Dans les programmes, les "flottants" sont des représentations des réels.
Leur précision étant limitée, les opérations sur les flottants peuvent être
fausses (e.g., "0,2 + 0,3 = 0,5" est faux dans les flottants) et ceci conduit à
des bogues [bugs] → "Écran Bleu de la Mort" de Windows, explosion de
la 1ère fusée Arianne 5
, ... ; cliquez ici pour un peu de théorie.
Il faut donc être prudent : ordonner/simplifier les opérations pour réduire les
erreurs et gérer l'accumulation des erreurs ou prouver que le programme
n'en génère pas (-> enseignements dans les années suivantes).

Exemple de question d'évaluation :   Dans une gestion normalisée de
nombres en "virgule flottante" sous la forme  M * BE, ...

A) au moins un nombre à gauche de la virgule est toujours représenté
     physiquement (→ stocké) dans la mantisse
B) la représentation de E et M se fait généralement(mais pas dans le
     cas où le format IEEE 754 est utilisé) par "signe et valeur absolue"
C) l'exposant est biaisé à 128 si représenté sur 8 bits au format IEEE 754
D) les 3 dernières réponses         E) aucune des 4 dernières réponses

3.3. Numération – codes non numériques
("non numérique" dans le sens "non basé sur la numération positionnelle")

Les codes sont soit numériques, soit non numériques.
Nous venons de voir des codes numériques pour des nombres.
Les codes non numériques sont basés sur des tables.
Ils peuvent être pour des décimaux, des caractères, ...


Il existe de nombreux codes binaires non numériques pour décimaux.
En voici quelques uns.


Exemple de question d'évaluation :     Le code biquinaire ...
A) est un code non numérique         B) est un code sur 5 bits
C) a exactement 2 bit à 1 dans les 2 positions de gauche
D) les 3 dernières réponses           E) aucune des 4 dernières réponses

3.3.1. Numération – Codes pour caractères

Voici quelques codes binaires non numériques pour caractères
 – alphanumériques (A..Z, a..z, 0..9), spéciaux (?,!, @, ", ...), etc. –  :


Exemple de question d'évaluation :     L'Unicode ...
A) est un code numérique         B) inclut le code ASCII et le code EBCDIC
C) inclut les langues d'Asie dans sa sous-catégorie UTF-16
D) les 3 dernières réponses       E) aucune des 4 dernières réponses

3.3.2. Sérialisation des caractères : endianisme

Little-endian storage
(stockage par le petit bout, en mémoire vive) : stockage
    des octets (d'une valeur multi-octets) dans l'ordre croissant des poids, i.e., les
    bits, octets et mots de poids les plus faibles se situent en 1er dans la mémoire,
    "en haut (et/ou à gauche)", aux adresses les plus hautes, donc inversement à
    une lecture de gauche à droite de la valeur hexadécimale. Exemple : pour le
    caractère U+8F (caractère Unicode dont le code hexadécimal est 8F16), le
    premier octet stocké en mémoire est F et le second est 8.
    C'est le cas dans les microprocesseurs de Intel ou pour UTF-16LE.

Big-endian storage :
stockage des octets dans l'ordre inverse des poids, i.e.,
    les bits, octets et mots de poids les plus forts se situent en 1er dans la
    mémoire, "en haut (et/ou à gauche)", aux adresses les plus hautes, comme
    dans une lecture de gauche à droite de la valeur hexadécimale.
    C'est le cas dans les microprocesseurs de Motorola, pour UTF-16BE ou après
    le caractère U+FEFF.


Sur Wooclap :
À quoi réfère l'expression "little-endian" ?
A) à une méthode qui consiste à commencer par "le petit bout"
B) au stockage des octets (d'une valeur multi-octets) dans l'ordre des poids
C) au stockage des octets normalement utilisé après le caractère UTF-16LE
D) les 3 dernières réponses
E) aucune des 4 dernières réponses

3.4. Avantages du numérique par rapport à l'analogique

Mais les entrées-sorties des processeurs sont en analogique
→ nécessité de convertisseurs entre numérique et analogique.

Sur Wooclap :
Les avantages du numérique par rapport à l'analogique sont ...
A) sa facilité d'implémentation         B) sa fiabilité
C) sa faible sensibilité aux déformations du signal dues au magnétisme
D) ses possibilités supplémentaires de manipulation
E) les 4 autres réponses
Un domaine impliquant nécessairement de l'encodage en binaire est ...
A) la numérisation         B) l'informatique         C) l'architecture des ordinateurs
D) les 2 dernières réponses         E) aucune des 4 autres réponses

3.4. Avantages du numérique par rapport à l'analogique (suite)

Rendu d'une image avec différentes précisions/définitions/compressions :

Effet du bruit sur un signal :

4. Tout ou partie du TD pour la partie 1 du cours d'AO

Si la section "3.2.1. Entiers positifs" de la partie 1 n'est pas finie,
ce TD commencera par finir cette section.
Il y aura en fait 2 "TDs réels" pour ce "TD pour la partie 1" (et, durant ceux-ci,
quelques questions Wooclap via "ao1wooclap" sur Moodle).
Pour chaque exercice (question Wooclap ou pas), un étudiant passera au
tableau pour l'effectuer et l'exercice sera corrigé au tableau.

I. Exemples de questions de contrôle pour le début du 1er TD réel

  1. Un exemple de chiffre ni octal ni binaire est ... a) 0 b) 2 c) 5 d) 8 e) aucune des autres réponses

  2. Quel est le plus grand chiffre (en base 10) entre 1 et 20 (inclus) ? ("plus grand": supérieur dans l'ordre des entiers naturels, e.g., 1 est plus grand que 0)

  3. 1010 est égal à ... a) 11002 b) 10102 c) 118 d) 1116 e) aucune des autres réponses

  4. 101012 est égal à ... a) 2110 b) 2310 c) 1716 d) 2116 e) aucune des autres réponses

  5. L'addition des représentations en base 2 de 2510 et 1410 donne ...

  6. Exprimer dans les bases suivantes le nombre de minutes dans "1h04min" (1 :04) : 10, 60, 30, 2, 8, 16.

4. Tout ou partie du TD pour la partie 1 du cours d'AO (suite)

II. Exemples de questions de conversion/calcul
       (si cela n'a pas encore été fait, le début de la section 3.2.3 et la section 3.2.2 seront
        présentées ; les questions après la 7.a sont optionnelles )

  1. Exprimer en binaire, en octal et hexadécimal les nombres réels suivants : 32,625 et 128,75.

  2. Convertir en décimal les nombres suivants, la base étant indiquée en indice : DADA,C16, 270,148 et 11011,011112

  3. Donner, sur 8 bits, les représentations "signe + valeur absolue", "complément à 1" et "complément à 2" des valeurs décimales suivantes : -32 et -128.

  4. Faire, en binaire puis en décimal, l'addition de 0018 à 3778 puis de 1778 à 2008, en supposant tout d'abord que 3778 et 2008 sont des représentations sur 8 bits en complément à 1 de nombres négatifs, puis en supposant que ce sont des représentations sur 8 bits et en complément à 2 de nombres négatifs.

  5. On dispose d'une machine où les nombres réels sont représentés sur 32 bits (numérotés de droite à gauche de 0 à 31) avec : - une quantité fractionnaire sur 23 bits (les bits 0 à 22) correspondant à la mantisse m normalisée (0,5 =< m < 1) ; - un exposant biaisé, représentant une puissance de 2, codé sur 8 bits (les bits 23 à 30) ; - un bit pour le signe de la mantisse (0 si m >= 0,   1 si m < 0). Donner, sous la forme ±a * 2b (a et b décimaux), la valeur qui correspond aux 32 bits suivants (sous forme octale) : 27632000000.

4. Tout ou partie du TD pour la partie 1 du cours d'AO (suite)

  1. La représentation des nombres réels correspond à celle décrite précédemment, sauf que le premier bit de la mantisse normalisée, premier bit qui est donc toujours à 1, n'est pas représenté sur la machine. Cet artifice complique un petit peu les manipulations mais permet de gagner en précision. Donner, sous forme octale, la représentation, sur une telle machine, des nombres décimaux suivants : 278 et -6,53125.

  2. Soit une machine où les nombres réels sont représentés sur 12 bits, numérotés de droite à gauche de 0 à 11, avec : - une mantisse m normalisée (0,5 =< m < 1) sur 7 bits (les bits 0 à 6) ; - un exposant biaisé, représentant une puissance de 2, codé sur 4 bits (les bits 7 à 10) ; - un bit pour le signe de la mantisse (le bit 11). a) Trouver l'intervalle fermé des valeurs strictement positives représentables sur cette machine. Les bornes seront mises sous la forme ±a * 2b , a et b étant des entiers décimaux. Simplifier autant que possible. b) Mettre sous la forme ±a * 2b, où a et b sont des entiers décimaux, les 2 nombres réels suivants donnés sous forme hexadécimale : X=AE8 et Y=9DO. c) Calculer Z = y - X. Mettre le résultat sous la forme ±a * 2b, entiers décimaux, en simplifiant au maximum. d) Donner, sous forme octale, la représentation correspondant au nombre décimal suivant : -32,625.

  3. Que représente en décimal l'information 377240000008 si on la considère comme un nombre entier, en complément à 1, en complément à 2 et comme un nombre réel, avec une représentation analogue à celle décrite dans l'exercice 7 ?