NUMERIQUE ET SCIENCES INFORMATIQUES

Niveau : 1ère générale, enseignement de spécialité NSI

 

D
É
C
O
N
N
E
C
T
É

Représentation des données

1 - Codage de l'information

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

2 - Apparition du binaire

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)

Fuxi Bagua
Les 64 hexagrammes de Fuxi Les huit trigrammes

3 - Code binaire

Fuxi16

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

3.1 - Comparaison entre la base 10 et la base 2 et conversion binaire - décimal

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

2 x 103    + 0 x 102   + 3 x 101  + 5 x 100

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.

3.2 - Conversion décimal - binaire

Stratégie pour convertir rapidement le nombre décimal 11 en binaire.

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

3.3 - Règle générale

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 ?

binaryGame

Faire les exercices n°1 et n°2 en cliquant ici

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

3.4 - Les multiples de l’octet

Depuis 1998 la norme est la suivante (unités décimales) :

UnitéSymboleNombre 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éSymboleNombre d'octets
1 kibioctetkio210 = 1 024
1 mébioctetMio220 = 1 048 576
1 gibioctetGio230 = 1 073 741 824
1 tébioctetTio240 = 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 !

TailleHDD

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 :

4 - Codage des nombres négatifs (binaire signé)

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

4.1 - L'addition binaire

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

Cercle bnaire signé

4.2 - Complément à deux

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 :
?
?
?
?
?
?
?
?

4.3 - Exercices

± 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

5 - Représentation binaire des nombres décimaux

5.1 - Virgule fixe

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

En 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 :

5.2 - Virgule flottante

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

5.3 - Norme IEEE 754

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

SExposantMantisse
Nbr de bits
1
8
23

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 :

SExposantMantisse
0
1000 0010
001 1010 0000 0000 0000 0000

Les 32 bits seront stockés dans la mémoire sous forme de 4 octets de la manière suivante :

Octet 1Octet 2Octet 3Octet 4
0100 0001
0001 1010
0000 0000
0000 0000

Faire l'exercice 6

6. Le code hexadécimal

Il a été inventé par les informaticiens pour simplifier l'écriture du binaire.

Pour la première fois en 1956, des ingénieurs l'ont utilisé sur un ordinateur Bendix G-15

En Base 16, les unités comprennent 16 symboles : 0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F

BendixG15

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 1Quartet 2Quartet 3Quartet 4Quartet 5Quartet 6Quartet 7Quartet 8
01000001000110100000000000000000

6.1 - Exercice 1

Codez -0,1 en code binaire à simple précision

partie décimale à multiplier par 2résultatpartie 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 :

SExposantMantisse

Représentation des 32 bits stockés dans la mémoire (Vous pouvez placez un espace entre chaque quartet pour une meilleur lisibilité):

Octet 1Octet 2Octet 3Octet 4
Binaire
Hexadécimal

6.2 - Exercice 2

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 :

SExposantMantisse

Les 32 bits stockés dans la mémoire : (mettre un espace entre chaque quartet)

Octet 1Octet 2Octet 3Octet 4
Binaire
Hexadécimal

Faire les exercices 3 et 4

7. Codage des caractères

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
positions inutilisées
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
positions inutilisées
9x
Ax NBSP ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ - ® ¯
Bx ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
Cx À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
Dx Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
Ex à á â ã ä å æ ç è é ê ë ì í î ï
Fx ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ

Source Wikipedia norme ISO/CEI 8859-1

7.1 - Exercice 3

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

Fond : Texte : Tables :