02rep_nb

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Informatique Tronc Commun

Représentation des nombres en machine

1 Problématique
Objectif : coder les nombres et les caractères à l’aide de codes binaires.
En effet, un ordinateur traite de l’information sous forme numérique binaire.
L’information se caractérise par son contenu (ce qu’elle représente), sa forme
(la manière de la formuler), son support (le moyen de la véhiculer).
Le contenu peut concerner des grandeurs numériques (code postal, entier relatif,
pixels, etc.), mais aussi des grandeurs analogiques (son, vitesse de rotation, etc.).
On s’intéresse ici à la forme des informations à traiter et à la notion de codage
des nombres et des caractères. Un code constitue une correspondance entre des
symboles et des objets à désigner.
Un code binaire est une correspondance entre un ensemble de symboles (0 et 1)
et un ensemble d’objets (chiffres, lettres, couleurs, etc.).
On appelle :
- bit (b) : binary digit, unité d’information pouvant prendre les valeurs 0 ou 1
- octet (o) : un mot binaire de 8 bits.
- byte (B) : terme anglo-saxon équivalent à octet

2 Représentation dans une base


2.1 Base
2.1.1 Définition
−1
Une base BN = {ci }N
i=0 est un système de N éléments tel que :

m
X
∀a ∈ N, ∃m ∈ N, a = cj N j
j=0

2.1.2 Bases usuelles


Les 3 bases les plus utilisées sont :
- Base décimale : B10 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- Base binaire : B2 = {0, 1}. Les chiffres sont alors appelés bit.
- Base hexadécimale : B16 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }

2.1.3 Exemples
Décomposition de (2024)10
Base 10 (2022)10 2.103 + 0.102 + 2.101 + 4.100
10
Base 2 (11111101000)2 1.2 + 1.2 + 1.2 + 1.27 + 1.26 + 1.25 + 0.24 + 1.23 + 0.22 + 0.21 + 0.20
9 8

Base Hex (7E8)16 7.162 + 14.161 + 8.160

page 1
Informatique Tronc Commun

2.2 Changement de bases


2.2.1 Passage d’une base quelconque à la base décimale
Pour convertir le nombre x = (ap . . . a1 a0 )b en base 10, on applique la formule
p
X
x= ak bk .
k=0

(01101001)2 = 0×27 +1×26 +1×25 +0×24 +1×23 +0×22 +0×21 +1×20 = 105

2.2.2 Schéma de Horner


Il est possible d’effectuer cete conversion sans calcul de puissance en appliquant
la méthode de Horner. Cette dernière consiste à itérer la suite finie u0 , u1 , . . . , up
définie par :

u0 = (ap )b , u1 = (ap ap−1 )b , . . . , up = (ap ap−1 . . . a0 )b = x.

Les termes de cette suite sont liés par la récurrence

uk = buk−1 + ap−k .

2.2.3 Passage de la base décimale à une base quelconque


m
aj N j . En factorisant par N on
P
On cherche les coefficient aj tels que a =
j=0
!
m−1
j
P
obtient a = N aj+1 N + a0
j=0
Le reste de la division de a par N est égale au coefficient a0 . Par division
successive par N , on obtient les autres coefficients.
Ainsi 105 en base 10 s’écrit 1101001 en base 2.

3 Le codage des nombres


3.1 Les nombres entiers naturels
Definition 1 On appelle codage à champ fixe un codage sur un nombre de bits
n constant (n=8 pour l’octet).
La position occupée par le bits (en partant de 0 et de droite) correspond à son
poids en puissance de 2.
Il est alors possible de représenter un entier naturel N tel que 0 ≤ N ≤ 2n − 1
Un entier naturel est compris entre 0 et 255 lorsqu’il est codé sur un octet, entre
0 et 4294967295 lorsqu’il est codé sur 32 bits.
A la suite d’opérations arithmétiques, des dépassements de capacité (overflow)
sont possibles, mais certain langages de programmation dont Python peuvent
traiter des nombres entiers de taille arbitraire.

page 2
Informatique Tronc Commun

3.2 Les nombres entiers relatifs


3.2.1 Signe et valeur absolue (idée 0)
On sacrifie 1 bit pour représenter le signe : + est représenté par 0 et - par 1.
On code ainsi avec un mot de n bits les entiers relatifs Z tels que :

−(2n−1 − 1) ≤ Z ≤ 2n−1 − 1

Problèmes :
- On a deux représentations différentes de 0 : 00 . . . 0 et 10. . . 0 .
- Il est difficile d’effectuer des opérations sur les nombres car le bit de signe doit
être traité à part.

3.2.2 Complément logique (ou complément à 1 - idée 1)


Les nombres positifs sont représentés par leur écriture en base 2. Pour les
nombres négatifs, on remplace chaque bit à 0 par 1 et vice versa.
Exemple : Représentation de -3 sur 4 bits
Pour retrouver le nombre à partir de sa représentation en complément à 1 :
- si le bit de gauche est 0, le nombre est positif et on a sa représentation en
binaire
- si le bit de gauche est 1, alors le nombre est négatif et pour trouver sa valeur
absolue, on inverse les bits.
On code ainsi avec un mot de n bits les entiers relatifs Z tels que :

−(2n−1 − 1) ≤ Z ≤ 2n−1 − 1

Exemple : 6-3=3 avec 6=0110 et 3=0011.

3.2.3 Complément arithmétique (ou complément à 2 - idée 2)


Même méthode que précédemment, sauf qu’il faut encore ajouter 1 au résultat
pour la représentation des entiers négatifs. Ainsi :
- on traduit la valeur absolue du nombre négatif en binaire.
- on prend le complément logique de nombre binaire obtenu
- on ajoute 1 au nombre complémenté.
Il est alors possible de faire des opérations.
Remarque : 0 est alors codé d’une seule façon.
Pour retrouver le nombre à partir de sa représentation en complément à 2 :
- si le bit de gauche est 0, le nombre est positif et on a sa représentation en
binaire ;
- si le bit de gauche est 1, alors le nombre est négatif et pour trouver sa valeur
absolue, on inverse les bits et on ajoute 1.
Ainsi avec un mot de n bits, on code les entiers relatifs Z tels que :

−(2n−1 ) ≤ Z ≤ 2n−1 − 1

Remarque : On gagne un nombre négatif par rapport au complément à un.

page 3
Informatique Tronc Commun

3.3 Les nombres rationnels


3.3.1 Nombres à virgule et bases
On peut ajouter une partie fractionnaire à un nombre dans sa représentation en
base N en ajoutant des puissances négatives de N . Les chiffres obtenus seront
ajoutés à la suite et séparés par une virgule.
Exemple : (63, 5)10 est l’écriture en base 10 de 6.101 + 3.100 + 5.10−1
Il n’y a pas forcément de solution exacte dans le codage de la partie fractionnaire
d’un nombre décimal et le nombre de puissances négatives dépend des capacités
de la machine et de la précision souhaitée.
On code ainsi avec un mot de n bits dont k bits pour la partie fractionnaire, les
réels R tels que : −2n−1−k ≤ R ≤ 2n−1−k − 2−k
Le codage en virgule fixe (fixed point) sur n bits, ne permet de représenter
qu’un intervalle restreint de valeurs. La représentation à virgule flottante a été
introduite pour répondre à ce besoin et améliorer la précision des calculs.

3.3.2 Virgule flottante (floating point)


On représente les nombres par un triplet (s, e, m) : x = s.m.B e , avec B la base.
Dans ce triplet, s est le signe, e est l’exposant et m est la mantisse.
On définit alors le codage avec B = 2 (nombres codés en binaire), d’un nombre
en simple précision sur 32 bits et en double précision sur 64 bits
- le signe s = ±1 est codé sur 1 bit : 0 pour positif, 1 pour négatif.
- l’exposant e est un entier codé sur 8 bits en simple précision, 11 en double
précision. L’exposant peut être positif ou négatif. Cependant, la représentation
habituelle des nombres signés (complément à 2) rendrait la comparaison entre
les nombres flottants un peu plus difficile. Pour régler ce problème, l’exposant
est décalé, afin de le stocker sous forme d’un nombre non signé. Ce décalage de
2ne −1 − 1 est appelé biais (ne représente le nombre de bits de l’exposant). Il
s’agit donc d’une valeur constante une fois que le nombre de bits est fixé.
- la mantisse m est un nombre à virgule tel que m ∈ [1, 2[, codé sur 23 bits
en simple précision, 52 en double précision. En base binaire, m peut toujours
s’écrire m = 1, . . . . Le chiffre 1 n’a pas besoin d’être représenté. Seuls les chiffres
après la virgule de la mantisse sont codés en binaire.

Exemple : : représenter 525,5 en simple précision.


- Ecrire 525,5 en base 2 : (525, 5)10 = (1000001101, 1)2
- Trouver l’exposant : (525, 5)10 = (1, 0000011011)2 .29
- Identifier le triplet (s, e, m) :
· s = 0 car le nombre est positif,
· eb = e + 2ne −1 − 1 = 9 + 28−1 − 1 = (136)10 = (10001000)2
| {z }
biais
en base 2 sur 8 bits
· m = (00000110110000000000000)2
- Assembler : (525, 5)10 = (01000100000000110110000000000000)2

page 4

Vous aimerez peut-être aussi