Télécharger la présentation
1
Cohen Julien Neville gabriel
Le codage des nombres Cohen Julien Neville gabriel
2
Introduction Deux états possible: OUVERT ou FERME equivaut à 0 ou 1
0 ou 1 = chiffre binaire / booléen / bit(binay digit)
3
I) La représentation des entiers naturels en différentes bases
4
1) Représentation en base 10
On utilise le système de numération décimale à position On dit que 10 constitue la base de notre système. Il s’explique simplement par le nombre de symboles graphiques, ou chiffres, dont nous disposons pour représenter nos nombres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Exemple: 3207 représente 3 milliers + 2 centaines + 0 dizaines + 7 unités. Soit 3207 = 3 x x x
5
2) Représentation en base 2
Il n’y a que 2 chiffres : 0 et 1 On utilise le système de numérations binaire à position (le principe reste le même qu’en base 10) Exemple: = 1 × × × × × = 1 × × × × × …c’est-à-dire 19 en base 10 -Le bit (ou chiffre) le plus à gauche est appelé bit de poids fort Le bit (ou chiffre) le plus à droite est appelé bit de poids faible
6
3) Le système hexadécimal
Il utilise 16 symbole en général les chiffres arabes pour les dix premiers chiffres et les lettres A à F pour les six suivants. Utilisé en électronique numérique et en informatique car il est très commode En effet, chaque chiffre hexadécimal correspond exactement à quatre chiffres binaires (ou bits), rendant les conversions très simples et fournissant une écriture plus compacte.
7
Ainsi, les trois bases que nous avons cité précédemment sont les plus utilisé et les plus courante en électronique numérique et en informatique. Il ne faut cependant pas négliger le fait qu’il existe une infinité de base.
8
II) Un peu de pratique
9
1) Dans l’ordinateur C’est le codage binaire qui est utilisé:
Par exemple avec le nombre dont la représentation décimale est 59 : 59 = 1 x x x x x x 1 59 = 1 x x x x x x 20 59 =
10
2) Conversions
11
3) Addition de nombres binaires
Pour additionner deux nombres binaires on procède comme en base 10. 0+0= =0+1= =10 chaque fois qu’il y a 1+1, on écrit 0 et on retient 1. Par exemple :
12
4) Multiplication de nombres binaires
Il suffit d'utiliser les quatre opérations principales dédiées à la multiplication à savoir : 0 x 0 = x 1 = x 0 = x 1 = 1. Exemple :
13
III) Codage d’entiers relatifs
Comment représenter à l’aide de bits les entiers positifs ET négatifs, sachant qu’en bonne machine totalement binaire, un processeur ne pige ni le signe plus, ni le signe moins ?
14
1) La représentation signe valeur absolue
On pourrait utiliser un bit pour le signe et les autres bits pour la valeur absolue Signe valeur absolue Exemple : 610 = , alors -610 = Inconvénient : ce bit servant juste à déterminer le signe peut conduire à des résultats surprenant lors du traitement Exemple : −610 = −1210 (car = ) De plus Le nombre 0 se trouve représenté par deux valeurs distinctes : +0 ( ) et -0 ( ). Conséquence : : le plus grand entier relatif "codable" devient 127 ( ), et le plus petit -127 ( ). on ne peut plus parler de conversion entre binaire et base 10 !
15
2) Complément à deux Soit un nombre binaire N composé de p bits. En mathématique, on appellera complément à 1 de N le nombre noté 𝑁 tel que: N + 𝑁 = 2p − 1. Exemple : = = 26 – Donc est bien le complément à 1 de On peut donc en déduire la relation suivante : −N = 𝑁 + 1 – 2p
16
3) La représentation biaisée (ou par excès)
Elle consiste à considérer tout nombre binaire codé comme un entier non signé auquel on soustrait une constante, ou biais, définie selon le domaine de validité des entiers codés que l’on recherche. Exemple : = avec la méthode positionnelle Or, le biais d’un octet est 128, car il correspond à la moitié du nombre de nombres codables sur un octet(256). L’écriture biaisée de 129 est donc : = +1
17
4) Récapitulatif Prenons pour exemple l’octet 10000001
Application : Comment le décoderiez-vous en base 10? Aucune idée! Il est foncièrement impossible de décoder un octet si l’on ignore le codage qui a servi pour le créer. En d’autres termes, un octet peut virtuellement coder n’importe quel entier ! C’est au processeur de connaître en permanence le type de codage qui a été utilisé pour coder les nombres qu’il manipule. Quelles sont les méthodes de codage que l’on a vu précédemment?
18
Nous avons vu jusqu’à présent 4 méthodes de codage : le codage par complément à deux, représentation signe-valeur absolue, représentation biaisée avec un biais égal à 128, numération positionnelle. Ainsi, si on ne précise pas le codage l’octet pourrait être: −127 si on utilise le codage par complément à deux. −1 Si on utilise la représentation signe-valeur absolue. +1 Si on utilise la représentation biaisée avec un biais égal à 128 +129 Si on code en numération binaire positionnelle.
19
IV) Le codage des réels
20
Nous avons vu à jusqu’à présent comment coder des nombres relatifs, qu’en est-il des nombres réel ?
Nombre réel = partie entière située à gauche de la virgule + éventuellement une partie décimale, située après celle-ci. On utilise le principe de la numération positionnelle Exemple : 23, 375 = 2×10+3×1+3×0.1+7×0.01+5×0,00 1 . . . ce qui revient à écrire : , 375= 2 × × × × × 10-3 De même en binaire : 10111, 011 =1×24+0×23+1×22+1×21+1×20+0×2-1+1×2-2+1×2-3 . . . soit : , 011 =1×16+0×8+1×4+1×2+1×1+0×0, 5+1×0, 25+1×0, 125 . . . c’est-à-dire 10111, 0112 = 23, 37510
21
1) Numération binaire par virgule fixe
Le problème : Comment coder la virgule car impossible de la coder par un bit! (problème qui ne se pose pas pour le codage du signe car placé toujours au même endroit) la machine doit convenir une fois pour toute d’une position immuable de la virgule. Les réels codés selon cette méthode seront alors dits représentés en virgule fixe. Voici la méthode de conversion en base 2 :
22
Convertissons 1234, 347 en base 2. (traitons d’abord la partie entière) = On transforme la partie décimale selon le schéma suivant : 0, 347 × 2 = 0, , 347 = 0, , 694 × 2 = 1, , 347 = 0, o, 388 × 2 = 0, , 347 = 0, , 766 × 2 = 1, , 347 = 0, , 552 × 2 = 1, = 0, , 104 × 2 = 0, , 347 = 0, , 208 × 2 = 0, , 347 = 0, , 416 × 2 = 0, , 347 = 0, , 832 × 2 = 1, , 347 = 0, , 664 × 2 = 1, , 347 = 0, , 328 × 2 = 0, , 347 = 0, On continue ainsi jusqu’à la précision désirée. . .Attention ! Un nombre à développement décimal fini en base 10 ne l’est pas forcément en base 2.
23
On aura donc quelque chose comme ça :
Prenons un format sur 4 octets pour coder nos réels positifs avec la virgule placé en plein milieu. On aura donc quelque chose comme ça : (,) Exemple : Voici ce nombre codé en binaire en virgule fixe : (,) On remarque bien qu’il y a un grand gâchis de bits : les 16 bit avant la virgule sont inutiles! 16 bits = précision de 2-16 16 bits = 216 possibilités
24
2) Le flottement de la virgule
(−1) signe × Mantisse × 10±Exposant Mantisse = partie décimale du nombre Donc pour les binaires nous avons la relation suivante : (−1) signe × Mantisse × 2±Exposant (mantisse et exposant exprimés en binaire) Représentation en virgule flottante Exemple : = × 100 = 126, 47 × 102 = × 10− = × 20 = 1, 1001 × 24 = × 2−5
25
3) La norme IEEE Code un nombre sur 32 bits
-Le signe du nombre sera codé par le bit de poids fort (celui le plus à gauche) : "0" pour les réels positifs, "1" pour les réels négatifs ; à l’image de la représentation par signe-valeur absolue. -L’exposant sera codé selon une représentation biaisée et sur les 8 bits consécutifs au signe. Il sera établi de telle manière que la mantisse soit de la forme "1, . . .", c’est-à-dire de telle manière que la virgule soit située juste après le premier bit égal à "1". -la mantisse (les bits situés après la virgule) sur les 23 bits restants.
26
Concrètement le codage a la forme suivante :
Seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm le s représente le bit relatif au signe les e représentent les bits relatifs à l'exposant les m représentent les bits relatifs à la mantisse Remarque : -les exposant et sont interdits -Il faut rajouter 127 ( ) à l'exposant pour une conversion de décimal vers un nombre réel binaire. Les exposants peuvent ainsi aller de -254 à 255
27
Exemple : Soit à coder la valeur 525,5. -525,5 est positif donc le 1er bit sera 0. -Sa représentation en base 2 est la suivante : ,1 -En normalisant, on trouve : 1, *29 -On ajoute 127 à l'exposant qui vaut 9 ce qui donne 136, soit en base 2 : -La mantisse est (car on prend la partie décimale de 1, *29) -Comme la mantisse doit occuper 23 bits, il est nécessaire d'ajouter des zéros pour la compléter : -La représentation du nombre 525,5 en binaire avec la norme IEEE est donc :
28
Conclusion
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.