Système de numération et représentation de l’information

Index de l'article

Généralités

Presque tous les ordinateurs ne font pas le calcul en base 10. La base 10 est le plus souvent utilisée par les hommes, il faut apprendre à convertir les nombres d’une base de données à une autre.

Les systèmes de numération

Par définition est l’action ou la manière de représenter les chiffres. Il existe plusieurs systèmes de numération :

  • Système décimal
  • Système binaire
  • Système octal
  • Système hexadécimal

Ces systèmes sont généralement utilisés dans la programmation, pour la communication et l’ordinateur et sont utilisateur. Dans la base donnée α un nombre peut être exprimé sous la forme d’un polynôme. Supposons le nombre suivant X = (anan-1 … a0) la forme pronominale de se nombre est X = Σni=0aiαi

Ai : coefficient
α : la base

Exemple :

Soit X = 2955 sa forme pronominale est : X = 2x103 + 9x102 + 5x101 + 5x100

Le système décimal ou base 10

 

C’est le système le plus connu et le plus utilisé par les hommes. Il est  constitué de 10 symboles ou chiffres appelés digits. Ces symboles sont : 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9

 

Le système binaire ou base 2

 

C’et un système composé de 2 symboles 0 et 1 encore appelé digits binaire (binary digit) d’où le nom bit. Ce système est à la base du langage machine (c’est le seul langage compréhensible par l’ordinateur).

Le système octal ou base 8

 

C’est un système intermédiaire constitué de 8 symboles qui sont : 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ;

Le système hexadécimal ou base 16

Le langage utilisé par l’ordinateur pour communiquer est le langage binaire. Or écrire une suite d’instruction dans le langage binaire devient parfois impossible car il faudra systématiquement aligner une suite de 0 et de 1. Ce qui est laborieux et augmente les possibilités d’erreur. C’est la raison pour laquelle le système hexadécimal intervient. Ce système dispose de 16 symboles dont 10 chiffres de 0 à 9 et 6 lettres A ; A ; B ; C ; D ; E et F.
A = 10 ; B = 11 ; C = 12 ; D = 13 ; E = 14 ; F = 15

 

 

Représentation de données numériques

 

Un nombre réel comporte généralement une partie entière et une partie décimale. Dans une base α un nombre X quelconque peut avoir la représentation suivante.
X = (anan-1 … a0, b1b2 … bn). Sa représentation polynômiale est X = Σni=0aiαi + Σmi=1biαi
Il existe une correspondance entre les bases 10 ; 2 ; 8 et 16.

 

Base 10

Base 2

Base 8

Base 16

0

0000

0

0

1

0001

1

1

2

0010

2

2

3

0011

3

3

4

0100

4

4

5

0101

5

5

6

0110

6

6

7

0111

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

 

 

 

Pour convertir un nombre d’une base donnée à une autre on convertit la partir entière dans la base voulue et pour la partie décimale on convertit la partie fractionnelle dans la base voulue.

 
 

Conversion de la partie entière

 

Conversion de la base 10 à une base β

 

Il est possible de passer d’un nombre décimal à un nombre en base β en utilisant la division successive par β.
On divise successivement le nombre décimal par β en gardant les restes, on s’arrête lorsque le quotient devient nul. Le résultat est obtenu en prenant l’ordre inverse des restes.

 

Exemples :

 

Conversion d’un nombre en base 2.
(18)10 = (…)2

 

18 :2 = 9 et reste = 0
9 :2 = 4 et reste = 1
4 :2 = 2 et reste = 0
2 :2 = 1 et reste = 0
1 :2 = 0 et reste = 1

 

(18)10 = (10010)2

 

Conversion d’un nombre en base 8
(207)10 = (…)8

 

207 :8 = 25 et reste = 7
25 :8 = 3 et reste = 1
3 :8 = 0 et reste = 3

 

(207)10 = (317)8

 

Exercice :

Effectuer les conversions suivantes :

 

(3479)10 = (…)16 ; (145)10 = (…)2 ; (3007)10 = (…)16 ; (452)10 = (…)8

 

Conversion de la base β à la base 10

 

De façon inverse il est facile de passer d’un nombre β d’un nombre en base 10 pour multiplication successive de puissance de β : on multiplie chaque  élément du nombre en base β élevé à une  puissance. Les puissances sont comptées à partir de 0 en partant de la droite vers la gauche, puis on effectue la somme des résultats obtenus :

  • Trouver la position de chaque chiffre constituant le nombre
  • On multiplie chaque chiffre par β à la puissance de sa position
  • Faire la somme des résultats obtenus.

Exemple :

1) (1100101)2 = (…)10

 

2.26 + 1.25 + 0.24 + 0.23 + 1.22 + 0.21 + 1.20 = 64 + 32 + 0 + 0 + 4 + 0 + 1 = (101)10

 

2) (203)8 = (…)10

 

2.8² + 0.81 + 3.80 = 128 + 3 = (131)10

 

3) (76)16 = (…)10

 

7.161 + 6.160 = 112 + 6 = (118)10

 
 

Exercice :

Effectuer les conversion suivantes :

  1. (145)8 = (…)10
  2. (452)8 = (…)10 = (…)16
  3. (546)16 = (…)10 = (…)8 = (…)2
  4. (458)16 = (…)10 = (…)2
  5. (DC48)16 = (…)10 = (…)8
  6. (100011)2 = (…)10 = (…)8
  7. (111001011)2 = (…)10 = (…)16

Conversion de la partie décimale

 

Une partie décimale y s’exprime sur la forme suivante
y=(0.b1b2...bn) = Σni=1biβ-i = b11 + b22 + … + bnn

 

En multipliant y par β on obtient une partie entière et une partie décimale
βy = b1 + b21 + … + bmm-1

 

Formulons l’algorithme sous la forme suivante
d0 = y
d1 = D(βd0) et b1 = E(βd0)                            D : Partie décimale
d2 = D(βd1) et b2 = E(βd1)                            E : Partie entière et β :la base
.
.
.
.

 

La conversion de la partie décimale peut générer un nombre qui n’a pas une représentation fixe.

 

Exemple : (0.175)10 = (…)2
d0 = 0.175
2d0 = 0.35
d1 = 0.35 et b1 = 0
2d1 = 0.7
d2 = 0.7 et b2 = 0
2d2 = 1.4
d3 = 0.4 et b3 = 1
2d3 = 0.8
d4 = 0.8 et b4
2d4 = 1.6
d5 = 0.6 et b5 = 1
2d5 = 1.2
d6 = 0.2 et b6 = 1
2d6 = 0.4
d7 = 0.4 et b7 = 0
réponse : (0.175)10 = (0.0010110…)2

 

Exercice :

Effectuer les conversions suivantes :

  1. (250.55)10 = (…)2 = (…)8 = (…)16
  2. (1001001.011)2 = (…)10 = (…)13
  3. (1032.2)8 = (…)10 = (…)2 = (…)16
  4. (45EA.AB)16 = (…)10 = (…)8
 

Conversion de 2↔8 et 2↔16

 

Conversion de 2↔8

 

Etant donné un nombre en base 2 la conversion en base 8 se fait en subdivisant la représentation binaire en groupe de 3 bits en remplaçant chaque groupe par son chiffre correspondant en base 8. La subdivision procède du point décimal vers la gauche pour la partie entière et vers la droite pour la partie décimale. Dans chaque cas on peut avoir à compléter le dernier bit par zéro pour avoir 3 bits.

 

Exemple :

(11 001 011 . 111 001 11)2 = (313.716)8

 

Pour passer de la base 8 à la base 2 on remplace chaque chiffre par sa représentation binaire.

 

Exemple :

(4375.4012)8 = (1000 011 111 101 . 100 000 001 010)2

 

Conversion de 2↔16

 

Chaque symbole de l’alphabet hexadécimal correspond à un nombre de 4 bits. Ainsi on peut passer d’un nombre binaire à un nombre hexadécimal en subdivisant  ces nombres binaires en groupe de 4kbits. Pour la partie entière on procède de la droite vers la gauche à partir du point décimal et pour la partie décimale on procède de la gauche vers la droite. Dans chaque  cas on peut avoir à compléter le dernier quartet de bit par les 0 pour avoir 4 bits.

 

Exemple :

(100 0111 . 1100 0011 0)2 = (47.C30)16

 

Pour passer de la base 16 à la base 2 il suffit de convertir tout simplement chaque chiffre qui compose le nombre hexadécimal en binaire.

 

Exemple :

(13C)16 = (0001 0011 1100)2

 

 



Opération arithmétique

 

Les opérations sur les nombres binaires s’effectuent de la même façon que sur les nombres décimaux. Toutefois il ne faut pas oublier que les seuls symboles utilisés sont le 1 et 0.

 

Addition fondamentale

 

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 et on retient 1

 

Soustraction

 

0 – 0 = 0
0 – 1 = 1 et on retient  1
1 – 0 = 1
1 – 1 = 0
0 – 1 – 1 = 0 et on retient 1

 

Multiplication

 

Méthode 1

 

Dans cette méthode on utilise le même principe que dans la base 10. On multiplie le multiplicande par chacun des bits du multiplicateur, on décale à chaque fois les résultats intermédiaires et on effectue ensuite l’addition de ces résultats partiels.

 

Exemple :

1011 * 111

 

1011
*111
______
1011
1011
1011
______
1001101

 

Méthode 2

 

On multiplie le premier terme par la somme des puissances de 2 du second terme. Pour cela il suffit de décomposer le second terme sous forme de somme de puissance de 2.
Ex : 101011 = 100 000 + 1 000 + 10 + 1

 

Exemple :

1100 * 1101 = 1100(1000 + 100 + 1) = 1100 000 + 1100 00 + 1100 = 10011100

 

Division

 

Nous avons constaté que la multiplication était basée sur une succession d’addition. Inversement la division va être basée sur une succession de soustraction.
Exemple :
1100 : 100 = 11

 

 


 

Opération en complément

 

La difficulté rencontrée dans l’opération de soustraction a amené les concepteurs d’ordinateur à représenter les  nombres négatifs sous une forme particulière appelée complément. L’opération A-B ou A et B sont des nombres positifs est remplacée par l’opération A + complément de B. dans une base donnée β il existe 2 formes de représentation en complément. Complément à β et complément à β-1.

 

Calcul du complément

 

Complément à β-1

 

Soit un entier A sur n chiffre dans la base β. Le complément à β-1 de A.

 

Cβ-1(A) = (βn-1)-A  avec n : nombre de chiffre et A : entier

 

Exemple 1 :

β=10  et n=4
C9(1453) = (104-1) – 1453 = 10 000 - 1 – 1453 = 9 999 – 1 453 = 8546

 

Exemple 2 :

C9(391) = 999 – 391 = 608

 

Exemple :

C1(1011) = 24 – 1 – 1011 = 1111 – 1011 = 0100

 

C1(11101) = 25 – 1 – 11101 = 100 000 – 11 101 = 11 111 – 11 101 = 00 010

 

Pour trouver le complément à 1 d’un nombre binaire on remplace les 1 par les 0 et les 0 par les 1

 

C1(1011) = 0100
C1(11101) = 00010

 

Complément à β

 

Le complément à β de A est égal à sont complément à (β-1)+1. Cβ = βn-A

 

Exemple :

C10(27) = 10² - 2 = 100 – 27 = 73
C10(34500) = 105 – 34500 = 100 000 – 34 500 = 65 500

 

Le complément à β d’un nombre peut être obtenu directement de la manière suivante : de la droite vers la gauche si on rencontre les zéro on les recopie, dès qu’on rencontre le premier chiffre non nul on trouve son complément à β pour le reste des chiffres on trouve son complément à β-1

 

Exemple :

C10(4 103 000) = 5 897 000
C2(100 1101) = 0110011
C10(1 479) = 8521
C2(10001100100) = 01110011100

 
 

Soustraction en complément

 

soustraction avec les nombres sans signe

 

Soit à effectuer l’opération suivante x – y = x + complément(y)

 

On distingue deux cas :

  • Si x≥y alors si la somme génère une retenue
  1. En complément à β on ignore cette retenue
  2. En complément à β-1 on ajoute cette retenue au résultat obtenu.
  • Si x<y alors le résultat est négatif et la somme ne génère pas de retenue. Alors il faut e trouver le complément du résultat et le précéder du signe moins (-).

Exemple :

effectuons l’opération en complément à 10 et ensuite en complément à 9.

 

1372 – 345
C10 : 1372 – 0345 = 1372 + C10(0345) = 1372 + 9655 = 1027

 

1372 – 0345
C9 : 1372 + C9(0345) = 1372 + 9654 = 1027

 

Exercice :

Calculer en complément à 1 et en complément à 2.

 

10100 – 10011 = 10100 + C1(10011) = 10100 + 01100 = 00001

 

10100 – 10011 = 101000 + C2(10011) = 10100 + 01101 = 00001

 
 

Nombre avec signe

 

L’ordinateur se sert d’un bit pour représenter le signe avec la conversion 0 pour le signe positif et 1 pour le signe négatif. On se fixe toujours le nombre de bit utilisé pour la représentation des données. Soit n ce nombre de bit, le premier des n bits à partir de la gauche représente le signe. Les n-1 dernier bits représente le nombre en complément à 1 ou à 2.

 

Exemple : n = 8bits
0011111 = 63
11000000 = -63 en complément à 1
11000001 = -63 en complément à 2

 

Pour n bits on ne peut représenter que des nombres appartenant à cet intervalle.

 

[-(2n-1-1) ; 2n-1-1] en complément à 1

 

[-2n-1 ; 2n-1-1] en complément à 2

 

Exemples :

 

101110 et n = 6
[-31 ; 31] à 1 on a  01001 = -17
[-32 ; 31] à 2 on a 010010 = -18

 

1101011 et n = 7
[-63 ; 63] à 1 on a 0010100 = -20
[-64 ; 63] à 2 on a 0010101 = -21

 

Soit à effectuer A-B sur n bits cette opération revient à calculer A + complément(B) sur les n bits.

  • En complément à 1 on additionne les deux nombres A et complément (B) y compris les bits de signe. S’il y’a retenu on la rajoute au résultat obtenu.
  • En complément à 2 on additionne les deux nombres A et complément(B) y compris les bits de signe. S’il y’a retenu on l’ignore.

Exemples :

 

n = 4bits
-3 + 7
3 = 0011 et -3 = C2(3) = 1101 et 7 = 0111
R = 0100

 

n = 4bits
-3 – 4
-3 = C2(3) = 1101 et 4 = 0100 alors -4 = C2(4) = 1100
R = 1001

 

 


Représentation en virgule flottante

 

Beaucoup d’applications numériques manipulent les données autres que les entiers. Ces derniers sont appelées nombres flottant. De façon générale, un nombre flottant est une représentation interne d’un nombre réel et il permet ainsi de coder des grands nombres. A un nombre à virgule flottante on associe  deux jeux de données :

  • Le premier représente les chiffres significatifs du nombre c’est-à-dire la mantisse.
  • Le second indique la puissance à laquelle la base est élevée : c’est l’exposant. Exemple 10E6

Il existe plusieurs représentations pour les nombres flottant.

 

Exemple : 13x106 = 0.13x108 = 1.3x107 = 1300x104

 

Il nous faut donc représenter ces nombres sous une forme normalisée afin d’obtenir une forme unique c’est-à-dire une représentation qui ne varie pas d’un matériel à un autre. Un nombre normalisé en virgule flottante est sous la forme : X = ±0.α1α2… αtβe

 

où 0 ≤  αi ≤ β-1
0 ≤ m < 1
α1 ≠ 0

 

Exemple :

27.38 = 0.273x10²
0.047x103 = 0.47x10²

 

Il existe plusieurs conventions de représentation :

  • La première représentation est la représentation IBM. Cette représentation utilise 32 bits :
    |S (1 bit) |Exposant(7 bits) |Mantisse (24 bits)|
  • La représentation IEE, elle utilise également 32 bits repartie comme suite :
    |Exposant (7 bits) | S (1 bit) | Mantisse (24 bits)|
 

Représentation dans la norme IEE

 

La base utilisée dans la représentation est la base 16. Il convient donc de transcrire d’abord le nombre à représenter en base 16. Ensuite il faut le normaliser. Dans la norme IEE l’exposant de référence à savoir 64.

 

Exemple :

Soit à représenter le nombre suivant en virgule flottante dans la norme IEE : 27,38

  • Conversion en base 16 : 1B.6147AE
  • Normalisation : 0.1B6147AE x 10+2
  • Calcul de l’exposant : 64 + 2 = (66)10 = (1000010)2
  • Signe : 0
    |1000 010|0 | 0001 1011 0110 0001 0100 0111| = 8 4 1 B 6 1 4 7

Comment retrouver la valeur décimale d’un nombre représenté en virgule flottante dans la norme IEE

 

On retrouve dans un vidage de fichier les valeurs hexadécimales suivantes (84163852)16

 

|1000010|0| 0001 0110 0011 1000 0101 0010|

  • S = 0 (nombre positif)
  • E = (1000010)2 = (66)10
  • Décalage : 66 – 64 = 2
  • 0001 0110 0011 1000 0101 0010 = 1 6 3 8 5 2  alors X = +0.163852 x 16²
  • Le décalage X = (16.3852)16
  • En base 10 : X = 1x161 + 6x160 + 3x16-1 + 8x16-2 + 5x16-3 + 2x16-4
    X = 16 + 6 + 3/16 + 8/16² + 5/163 + 2/164
    X = (22,22)10
 

Exercice :

 

1-      Représenter en IEE

  1. (27.75)10
  2. (34.675)10
  3. (-25.99)10
  4. (0.0017)10

2-      Décoder

  1. 512AB017
  2. 1A3B1468