Niveau : 1ère générale, enseignement de spécialité NSI
L’ordinateur est principalement composé : d’un microprocesseur, de mémoires (RAM, ROM, EEPROM…), interfaces d’entrée /sorties, une
alimentation électrique. Son microprocesseur est le « cerveau » de l’ordinateur, il est capable de faire plusieurs millions de calculs par
seconde. Il utilise la base 2 : le binaire (0 : absence d’électricité, 1 : présence d’électricité). Afin de communiquer avec l’homme il doit
convertir ses données binaires en chiffres ou messages compréhensibles par celui-ci.
Donc toute donnée introduite dans un ordinateur doit être traduite par une suite de 0 et de 1.
Ceci est vrai pour du texte, des nombres, des images, du son...
L’unité élémentaire de stockage est le bit (binary digit) qui prend la valeur 0 ou 1.
Un ensemble de 8 bits forme un octet (byte), par exemple : 01101011. On exprime actuellement la taille de la mémoire en Gigaoctets.
Exemple :
vu de l'humain... | vu de la puce... | Codage binaire utilisé |
---|---|---|
Vrai / Faux | 1 / 0 |
Type "Booléen" |
Le nombre entier 67 | 01000011 | Numération binaire (octet) |
La lettre N majuscule | 01001110 | Codage ASCII |
La couleur orange | 11111111 10000000 00000000 | Codage RVB |
Le nombre décimal 3,14151 | 01000000 01001001 00001110 10000000 | Codage IEEE-754 simple précision |
Le mot "NSI" | 01001110 01010011 01001001 | Codage ASCII |
C'est en 1699 que Gottfried Wihlem Leibniz explique le système binaire après avoir découvert l'arithmétique binaire dans un livre chinois vieux de 5000 ans, le Yi Jing (source Wikipedia)
Les 64 hexagrammes de Fuxi | Les huit trigrammes |
---|
Cliquez sur les ? afin de les remplacer par des 1 et des 0, en se basant sur les 16 premiers hexagrammes de Fuxi et les deux premières lignes du tableau.
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
? |
? |
? |
? |
2 |
? |
? |
? |
? |
3 |
? |
? |
? |
? |
4 |
? |
? |
? |
? |
5 |
? |
? |
? |
? |
6 |
? |
? |
? |
? |
7 |
? |
? |
? |
? |
8 |
? |
? |
? |
? |
9 |
? |
? |
? |
? |
10 |
? |
? |
? |
? |
11 |
? |
? |
? |
? |
12 |
? |
? |
? |
? |
13 |
? |
? |
? |
? |
14 |
? |
? |
? |
? |
15 |
La base 10 est composée de 10 symboles : les chiffres de 0 à 9. Pour compter au-delà de 9, on utilise ces mêmes chiffres pour former les dizaines, les centaines …
Exemple : 2035 est composé de 2 x 1000 + 0
x 100 + 3
x 10 + 5 x 1
103= 1000 |
102= 100 | 101= 10 | 100= 1 |
2 | 0 | 3 | 5 |
Prenons le 9ème hexagramme de Fuxi et remplaçons 10x par 2x, car le binaire c'est la base 2. Complétez le tableau ci-dessous
23= | 22= | 21= | 20= | Somme en décimal |
1 | 0 | 0 | 1 |
Cette méthode permet de convertir un chiffre binaire en décimal.
Lors de l’utilisation de la calculatrice, l’homme entre un chiffre décimal, le microprocesseur le transforme en binaire, effectue le calcul puis le transforme en décimal afin d’être compréhensible par l’homme.
J’ai 11 jetons à répartir dans les 4 tableaux
ci-dessous. Un tableau doit être entièrement rempli ou vide. Quand un
tableau est plein on place 1 en-dessous, quand il est vide on place 0.
déplacez les jetons dans les cases du tableau
|
|
|
|
|||||||||||||||
? |
? |
? |
? |
Vérification :
8 |
4 |
2 |
1 |
Décimal |
? |
? |
? |
? |
|
11 s’écrit :1011(2) ou 0b1011
Le transcodage décimal binaire ou binaire décimal sur un octet (8 bits) peut s’effectuer grâce au tableau suivant :
Complétez-le
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|
164 |
? |
? |
? |
? |
? |
? |
? |
? |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | |
192 | ? |
? |
? |
? |
? |
? |
? |
? |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
Décimal | Binaire |
Quel est le nombre maximal qu'on peut représenter avec 8 bits (1 octet)
Cliquez sur l'image pour jouer à Binary Game, qui fera le meilleur score ?
L'association de :
Nombre de bits | Nom | Non signé | Signé |
---|---|---|---|
1 | booléen (Boolean) | 0 / 1 | - |
8 | Octet (Byte) | 0 à 255 | -128 à +127 |
16 | Mot (short) | 0 à 65535 | -32768 à 32767 |
32 | Entier (int) | 0 à 4 294 967 295 | -2 147 483 648 à 2 147 483 647 |
Une variable est un espace mémoire dans lequel il est possible de stocker une valeur (une donnée).
Depuis 1998 la norme est la suivante (unités décimales) :
Unité | Symbole | Nombre d'octets |
---|---|---|
1 kilooctet | ko | 103 = 1 000 |
1 mégaoctet | Mo | 106 = 1 000 000 |
1 gigaoctet | Go | 109 = 1 000 000 000 |
1 téraoctet | To | 1012 = 1 000 000 000 000 |
1 pétaoctet | Po | 1015 = 1 000 000 000 000 000 |
Suivent l'exaoctet (Eo), le zettaoctet (Zo) et le yottaoctet (Yo)
Mais il est encore d’usage d’utiliser les unités traditionnelles d’avant 1998 (unités binaires), à savoir :
Unité | Symbole | Nombre d'octets |
---|---|---|
1 kibioctet | kio | 210 = 1 024 |
1 mébioctet | Mio | 220 = 1 048 576 |
1 gibioctet | Gio | 230 = 1 073 741 824 |
1 tébioctet | Tio | 240 = 1 099 511 627 776 |
etc... | ||
Dans les systèmes d'exploitation Windows, la taille des disques s'exprime encore avec la norme d'avant 1998 !
1 974 520 872 960 octet représentent environ 2 téraoctets ou 1.79 tébioctects.
Cette nouvelle norme est donc commercialement plus vendeuse.
Exercice :
Le signe '-' n'existe pas en binaire. Par convention, on utilise le bit le plus à gauche pour déterminer le signe d'un nombre binaire positif ou négatif.
Dans le cas d'un octet le huitième bit détermine le signe (0 : positif, 1: négatif), il ne reste plus que 7 bits pour coder un nombre.
Exemples :
+/- | 64 | 32 | 16 | 8 | 4 | 2 | 1 | Signe |
---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
0+0 = 0(2)
0+1 = 1(2)
1+1 = 2 en décimal, qui se code 0b10 en binaire
1+1+1 = 3 en décimal, qui se code 0b11 en binaire
Résoudre les additions binaire suivantes :
± | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|
12 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
48 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
? |
? |
? |
? |
? |
? |
? |
? |
Retenue | ? |
? |
? |
? |
? |
? |
? |
|
---|---|---|---|---|---|---|---|---|
62 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
31 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
? |
? |
? |
? |
? |
? |
? |
? |
Retenue | ? |
? |
? |
? |
? |
? |
? |
|
---|---|---|---|---|---|---|---|---|
3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
253 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
? |
? |
? |
? |
? |
? |
? |
? |
Observons la dernière addition :
Si on est en binaire signé on additionne 3 avec un nombre négatif dont la somme est égale à zéro. On en
déduit que le deuxième nombre est donc son opposé, c'est à dire la représentation binaire de -3
Règle : Pour coder -3 en binaire, on cherche le code binaire de 3, puis on inverse tous les bits et on additionne 1
± | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|
Code binaire de 3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Inversion des bits du code binaire de 3 | ? |
? |
? |
? |
? |
? |
? |
? |
Additionner 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Résultat en décimal : | ? |
? |
? |
? |
? |
? |
? |
? |
± | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|
ecrire 12 en binaire | ? |
? |
? |
? |
? |
? |
? |
? |
Retenue | ? |
? |
? |
? |
? |
? |
? |
|
Inversion des bits de 12 | ? |
? |
? |
? |
? |
? |
? |
? |
+1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
-12 se code en binaire signé : | ? |
? |
? |
? |
? |
? |
? |
? |
± | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|
ecrire 102 en binaire | ? |
? |
? |
? |
? |
? |
? |
? |
Retenue | ? |
? |
? |
? |
? |
? |
? |
|
Inversion des bits de 102 | ? |
? |
? |
? |
? |
? |
? |
? |
+1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
-102 se code en binaire signé : | ? |
? |
? |
? |
? |
? |
? |
? |
± | 64 | 32 | 16 | 8 | 4 | 2 | 1 | Retenue | ? |
? |
? |
? |
? |
? |
? |
---|---|---|---|---|---|---|---|---|
-12 | ? |
? |
? |
? |
? |
? |
? |
? |
-102 | ? |
? |
? |
? |
? |
? |
? |
? |
-114 se code en binaire signé : | ? |
? |
? |
? |
? |
? |
? |
? |
Montrez qu'en appliquant le complément à 2 à -114 qu'on obtient son opposé positif
± | 64 | 32 | 16 | 8 | 4 | 2 | 1 | Retenue | ? |
? |
? |
? |
? |
? |
? |
---|---|---|---|---|---|---|---|---|
Inversion des bits de -114 | ? |
? |
? |
? |
? |
? |
? |
? |
+1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
? |
? |
? |
? |
? |
? |
? |
? |
Quelle est l'étendue des nombres positifs sur un octet signé ? en décimal : de min à max
Quelle est l'étendue des nombres négatifs sur un octet signé ? en décimal : de min à max
Faire l'exercice 5
En base 10 : 21,82 se décompose de la manière suivante :
2 x 10 + 1 x 1 + 8 x 0,1 + 2 x 0,01
Soit : 2 x 101 + 1 x 100 + 8 x 10-1 + 2 x 10-2En base 2 : 2-1 = 0,5 , 2-2 = 0,25 , 2-3 = 0,125 , 2-4 =0,0625 ...
Codez la parie entière et décimale du nombre 10,625 sur un octet : le quartet de poids fort pour la partie entière et le quartet de poids faible pour la partie décimale
10 | , | 0,625 | ||||||
8 | 4 | 2 | 1 | 0.5 | 0.25 | 0.125 | 0.0625 | |
? |
? |
? |
? |
? |
? |
? |
? |
Codez le nombre pi ≈ 3,142 sur un octet : le quartet de poids fort pour la partie entière et le quartet de poids faible pour la partie décimale
3 | , | 0,142 | ||||||
2 | 1 | 0.5 | 0.25 | 0.125 | 0.0625 | 0.03125 | 0,015625 | |
? |
? |
? |
? |
? |
? |
? |
? |
Quels sont les inconvénients de cette méthode ?
Autre méthode pour coder la partie décimale plus simplement :
0.142 x 2 | 0.284 | 0 |
0.284 x 2 | 0.568 | 0 |
0.568 x 2 | 1.136 | 1 |
0.136 x 2 | 0.272 | 0 |
0.272 x 2 | 0.544 | 0 |
0.544 x 2 | 1.088 | 1 |
Le résultat en binaire se lit du haut vers le bas :
Il s'agit de coder le signe, la partie entière, la partie décimale et l'exposant
Exemple : 2019 peut aussi s'écrire donc 2,019 x 103 en décimal.
De même : 1001,1110 peut aussi s'écrire donc 1,0011110 x 23
Remarque : Lorsqu'on réalise une division par 2n, si l'exposant n est positif, on décale la virgule vers la
C'est la norme la plus employée par les micro-processeurs, elle date de 1985. Sur 64 bits en double précision ou 32 bits en simple précision, c'est cette dernière que nous alons étudier.
Format :
Le nombre binaire est formé d'un bit pour le signe (0 : positif, 1 : négatif), de l'exposant biaisé et de la mantisse
S | Exposant | Mantisse | |
---|---|---|---|
Nbr de bits |
Méthode : codage du nombre 9,625
On détermine le signe S=0
On représente 9,625 en binaire à virgule flottante : 1001,1010000000...
On décale la virgule vers la gauche de 3 rangs en multipliant 1,00110100000... par 23
La mantisse s'obtient ne gardant que les chiffres se trouvant après la virgule : 00110100000...
Dans l'étape de décalage on avait multiplié par 23. Par définition l'exposant s'obtient en additionnant un biais de 127 :
Exposant = 127 + 3 (l'exposant de la puissance de 2) = 130
130 = 1000 0010(2)
Voici la représentation simple précision de 9,625 :
S | Exposant | Mantisse |
---|---|---|
Les 32 bits seront stockés dans la mémoire sous forme de 4 octets de la manière suivante :
Octet 1 | Octet 2 | Octet 3 | Octet 4 |
---|---|---|---|
0000 0000 |
Faire l'exercice 6
Binaire | Hexadécimal | |||
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 2 |
0 | 0 | 1 | 1 | 3 |
0 | 1 | 0 | 0 | 4 |
0 | 1 | 0 | 1 | 5 |
0 | 1 | 1 | 0 | 6 |
0 | 1 | 1 | 1 | 7 |
1 | 0 | 0 | 0 | 8 |
1 | 0 | 0 | 1 | 9 |
1 | 0 | 1 | 0 | A |
1 | 0 | 1 | 1 | B |
1 | 1 | 0 | 0 | C |
1 | 1 | 0 | 1 | D |
1 | 1 | 1 | 0 | E |
1 | 1 | 1 | 1 | F |
Grâce à cette table, on peut facilement passer du code binaire vers l'hexadécimal
On coupe le binaire en quartets (4 bits).
Les 32 bits stockés représentant 9,625 dans la mémoire sous forme de 4 octets peuvent se découper en 8 quartets :
Quartet 1 | Quartet 2 | Quartet 3 | Quartet 4 | Quartet 5 | Quartet 6 | Quartet 7 | Quartet 8 |
---|---|---|---|---|---|---|---|
0100 | 0001 | 0001 | 1010 | 0000 | 0000 | 0000 | 0000 |
Codez -0,1 en code binaire à simple précision
partie décimale à multiplier par 2 | résultat | partie entière du résultat |
---|---|---|
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = |
Lors d'une division décimale de 1/7 = 0,142857142857142857 on observe une période des décimales.
Rechercher la période du codage binaire de 0.1 puis en déduire les 23 bits de sa représentation en arrondissant par excès le dernier bit
0,1 se code 0,
ou encore 1, x 2
On en déduit l'exposant biaisé : 127 + =
le nombre -0.1 se code ainsi :
S | Exposant | Mantisse |
---|---|---|
Représentation des 32 bits stockés dans la mémoire (Vous pouvez placez un espace entre chaque quartet pour une meilleur lisibilité):
Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
---|---|---|---|---|
Binaire | ||||
Hexadécimal |
Codez 3,14 en code binaire à simple précision
3 | ||
, | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = | ||
x 2 = |
En déduire les 23 bits de la représentation de 3,14
3,14 se code ,
ou encore 1, x 2
On en déduit l'exposant biaisé : 127 + =
le nombre 3,14 se code ainsi :
S | Exposant | Mantisse |
---|---|---|
Les 32 bits stockés dans la mémoire : (mettre un espace entre chaque quartet)
Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
---|---|---|---|---|
Binaire | ||||
Hexadécimal |
Faire les exercices 3 et 4
Bob Brener est le co-fondateur du code ASCII (American Standard Code for Information Interchange). Il faisait partie d'un groupe de travail ayant pour mission de standardiser une méthode permettant de coder les lettres et les chiffres. C'est en 1963 que la première table ASCII est publiée. Elle est limitée au caractères imprimables et ne prend pas en compte les caractères accentués français. Ces limites ont conduit au standard Unicode des familles UTF et ISO-8859-1 qui prennent en charge les caractères européens
ISO/CEI 8859-1 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
0x | ||||||||||||||||
1x | ||||||||||||||||
2x | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | |
8x | ||||||||||||||||
9x | ||||||||||||||||
Ax | NBSP | ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © | ª | « | ¬ | - | ® | ¯ |
Bx | ° | ± | ² | ³ | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ | ¾ | ¿ |
Cx | À | Á | Â | Ã | Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í | Î | Ï |
Dx | Ð | Ñ | Ò | Ó | Ô | Õ | Ö | × | Ø | Ù | Ú | Û | Ü | Ý | Þ | ß |
Ex | à | á | â | ã | ä | å | æ | ç | è | é | ê | ë | ì | í | î | ï |
Fx | ð | ñ | ò | ó | ô | õ | ö | ÷ | ø | ù | ú | û | ü | ý | þ | ÿ |
Source Wikipedia norme ISO/CEI 8859-1
Le contenu du fichier text.txt, représenté ci-dessous, commence à partir de l'adresse 00000000 avec la donnée 0x42 et contient 32 caractères ASCII.
Décodez le message contenu dans ce fichier texte :
Terminer les exercices du TD Numération
Télécharger le TD du chapitre 1 au format Microsoft Word
Télécharger le TD du chapitre 1 au format Libreoffice Writer
Dans le TD, on rappelle que la maîtrise de l'encodage IEEE 754 n'est pas exigible dans le programme de NSI, donc pas de panique ce point ne sera pas évalué au DS.
Contenu sous licence CC BY-NC-SA 3.0
Pascal Hassenforder 14/07/2021
Mise à jour le 19/09/2022