Flux rss
Collection CommentCaMarche.net

Représentation des nombres entiers et réels

Représentation d'un nombre dans un ordinateur

On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci puisse les stocker, les manipuler. Toutefois le problème est qu'un nombre mathématique peut être infini (aussi grand que l'on veut), mais la représentation d'un nombre dans un ordinateur doit être faite sur un nombre de bits prédéfini. Il s'agit donc de prédéfinir un nombre de bits et la manière de les utiliser pour que ceux-ci servent le plus efficacement possible à représenter l'entité. Ainsi il serait idiot de coder un caractère sur 16 bits (65536 possibilités) alors qu'on en utilise généralement moins de 256...

Représentation d'un entier naturel

Un entier naturel est un entier positif ou nul. Le choix à faire (c'est-à-dire le nombre de bits à utiliser) dépend de la fourchette des nombres que l'on désire utiliser. Pour coder des nombres entiers naturels compris entre 0 et 255, il nous suffira de 8 bits (un octet) car 28=256. D'une manière générale un codage sur n bits pourra permettre de représenter des nombres entiers naturels compris entre 0 et 2n-1.

Pour représenter un nombre entier naturel après avoir défini le nombre de bits sur lequel on le code, il suffit de ranger chaque bit dans la cellule binaire correspondant à son poids binaire de la droite vers la gauche, puis on « remplit » les bits non utilisés par des zéros.

Représentation d'un entier relatif

Un entier relatif est un entier pouvant être négatif. Il faut donc coder le nombre de telle façon que l'on puisse savoir s'il s'agit d'un nombre positif ou d'un nombre négatif, et il faut de plus que les règles d'addition soient conservées. L'astuce consiste à utiliser un codage que l'on appelle complément à deux.

  • un entier relatif positif ou nul sera représenté en binaire (base 2) comme un entier naturel, à la seule différence que le bit de poids fort (le bit situé à l'extrême gauche) représente le signe. Il faut donc s'assurer pour un entier positif ou nul qu'il est à zéro (0 correspond à un signe positif, 1 à un signe négatif). Ainsi si on code un entier naturel sur 4 bits, le nombre le plus grand sera 0111 (c'est-à-dire 7 en base décimale).
    D'une manière générale le plus grand entier relatif positif codé sur n bits sera 2n-1-1.
  • un entier relatif négatif grâce au codage en complément à deux.
    Principe du complément à deux :
    Soit à représenter un nombre négatif.
    • Prenons son opposé (son équivalent en positif)
    • On le représente en base 2 sur n-1 bits
    • On complémente chaque bit (on inverse, c'est-à-dire que l'on remplace les zéros par des 1 et vice-versa)
    • On ajoute 1
    On remarquera qu'en ajoutant le nombre et son complément à deux on obtient 0...
Voyons maintenant cela sur un exemple :
On désire coder la valeur -5 sur 8 bits. Il suffit :
  • d'écrire 5 en binaire : 00000101
  • de complémenter à 1 : 11111010
  • d'ajouter 1 : 11111011
  • la représentation binaire de -5 sur 8 bits est 11111011
Remarques:
Le bit de poids fort est 1, on a donc bien un nombre négatif.
Si on ajoute 5 et -5 (00000101 et 11111011) on obtient 0 (avec une retenue de 1...).

Représentation d'un nombre réel

Il s'agit d'aller représenter un nombre binaire à virgule (par exemple 101,01 qui ne se lit pas cent un virgule zéro un puisque c'est un nombre binaire mais 5,25 en décimale) sous la forme 1,XXXXX... * 2n (c'est-à-dire dans notre exemple 1,0101*22). La norme IEEE définit la façon de coder un nombre réel.
Cette norme se propose de coder le nombre sur 32 bits et définit trois composantes :

  • le signe est représenté par un seul bit, le bit de poids fort (celui le plus à gauche)
  • l'exposant est codé sur les 8 bits consécutifs au signe
  • la mantisse (les bits situés après la virgule) sur les 23 bits restants
Ainsi le codage se fait sous 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

Certaines conditions sont toutefois à respecter pour les exposants :

  • l'exposant 00000000 est interdit
  • l'exposant 11111111 est interdit. On s'en sert toutefois pour signaler des erreurs, on appelle alors cette configuration du nombre NaN, ce qui signifie Not a number
  • Il faut rajouter 127 (01111111) à l'exposant pour une conversion de décimal vers un nombre réel binaire. Les exposants peuvent ainsi aller de -254 à 255

La formule d'expression des nombres réels est ainsi la suivante:

(-1)^S * 2^( E - 127 ) * ( 1 + F )

où:

  • S est le bit de signe et l'on comprend alors pourquoi 0 est positif ( -1^0=1 ).
  • E est l'exposant auxquel on doit bien ajouter 127 pour obtenier son équivalent codé.
  • F est la partie fractionnaire, la seule que l'on exprime et qui est ajoutée à 1 pour effectuer le calcul.

Voyons ce codage sur un 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 : 1000001101,1
  • En normalisant, on trouve : 1,0000011011*2^9
  • On ajoute 127 à l'exposant qui vaut 9 ce qui donne 136, soit en base 2 : 10001000
  • La mantisse est composée de la partie décimale de 525,5 en base 2 normalisée, c'est-à-dire 0000011011.
  • Comme la mantisse doit occuper 23 bits, il est nécessaire d'ajouter des zéros pour la compléter :
    00000110110000000000000
  • La représentation du nombre 525,5 en binaire avec la norme IEEE est donc :
    0 1000 1000 00000110110000000000000
    0100 0100 0000 0011 0110 0000 0000 0000 (4403600 en hexadécimal)

Voici un autre exemple avec un réel négatif :
Soit à coder la valeur -0,625.

  • Le bit s vaut 1 car 0,625 est négatif
  • 0,625 s'écrit en base 2 de la façon suivante : 0,101
  • On souhaite l'écrire sous la forme 1.01 x 2-1
  • Par conséquent l'exposant vaut 1111110 car 127 - 1 = 126 (soit 1111110 en binaire)
  • la mantisse est 01000000000000000000000 (seuls les chiffres après la virgule sont représentés, le nombre entier étant toujours égal à 1)
  • La représentation du nombre 0,625 en binaire avec la norme IEEE est :
    1 1111 1110 01000000000000000000000
    1111 1111 0010 0000 0000 0000 0000 0000 (FF 20 00 00 en hexadécimal)


Dernière modification le mardi 14 octobre 2008 à 17:40:31.
Ce document intitulé « Représentation des nombres entiers et réels » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Conversion d'un nombre entier 32 bits en IP Conversion d'un nombre entier 32 bits en IP Nombre à convertir : 3265917058 Représentation binaire 11000010 10101001 11110000 10000010 - 3265917058 00000000 00000000 00000000 11000010 - 3265917058 >> 24 ( 194 ) 11000010 10101001 11110000... www.commentcamarche.net/faq/sujet-10443-conversion-d-un-nombre-entier-32-bits-en-ip
Arrondir une cellule heure en nombre entier (Résolu) Bonjour, je suis face au problème suivant: J'ai une cellule format heure (ex: 2:30) que je voudrais transformer dans une autre cellule en nombre entier (ex:3). Il faudrait donc arrondir cette cellule: jusqu'à l'heure 30'= arrondir... www.commentcamarche.net/forum/affich-8491827-arrondir-une-cellule-heure-en-nombre-entier
Coment passé d'un nombre entier en decimal ? (Résolu) Bonjour, je c que c pas de la programmation mais je trouve que c'est le forum qui peux répondre a ma question !! Coment passé d'un nombre entier en nombre decimal ? par exemple le nombre 1011011 donne 9110 en décimal ! mais comment on a fait... www.commentcamarche.net/forum/affich-8811975-coment-passe-d-un-nombre-entier-en-decimal
Vérifier si un nombre entier est un nombre premier en CDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la... www.commentcamarche.net/faq/sujet-7646-verifier-si-un-nombre-entier-est-un-nombre-premier-en-c
Manipuler des entiers en 64 bitsManipuler des entiers en 64 bits En C, un entier traditionnel non signé sur 32 bits ne peut pas dépasser la valeur de 4 294 967 295. Il se peut que vous soyiez amenés à manipuler des nombres plus grands et pour celà vous aurez besoin des entiers... www.commentcamarche.net/faq/sujet-7143-manipuler-des-entiers-en-64-bits
Entier non signé vers binaire avec MatLab (Résolu)Bonjour, quelqu'un pourrait me filer un code ou une astuce pour convertir des nombres entiers en nombres binaires. merci beaucoup d'avance. ps: nombres sous 8 bits. www.commentcamarche.net/forum/affich-6529366-entier-non-signe-vers-binaire-avec-matlab
Nombre premier (Résolu)Bonjour, je doi verifier si un nombre saisi au clavier est premier ou non voila mon programme ,je sais pas pourquoi ca marche pas,aidez moi svp #include using namespace std; int main() { int n; cout www.commentcamarche.net/forum/affich-4427524-nombre-premier
Chaine de caractère --> Entier en VBscript (Résolu)Bonjour, Si vous pouvez m'envoyer le bout du code " VBScript "qui transforme une chaine de caractère en un nombre entier. Merci. www.commentcamarche.net/forum/affich-68032-chaine-de-caractere-entier-en-vbscript
Télécharger ACM currency converterACM currency converter est un logiciel de conversion de devise entièrement gratuit. Léger rapide et facile à utiliser, l'application est multidevises et propose une mise à jour en temps réel. En plus, il intègre différentes fonctions telles que : la... www.commentcamarche.net/telecharger/telecharger-34057495-acm-currency-converter
Télécharger Count DaysCount Days permet tout simplement de savoir combien de jours il y a entre deux dates précises y compris le nombre de jours de travail. Il inclut aussi les semaines, les mois et les années. Léger, rapide et simple le logiciel est entièrement gratuit et... www.commentcamarche.net/telecharger/telecharger-34057640-count-days
Télécharger Desk Top Stock Steaming QuotesDesk Top Stock Steaming Quotes permet tout simplement de suivre en temps réel le cours de la bourse aux Etats-Unis. Léger, rapide et simple à utiliser le logiciel est entièrement gratuit. www.commentcamarche.net/telecharger/telecharger-34057497-desk-top-stock-steaming-quotes
[Brève] L'Art Urbain investit les ordinateurs portablesDell propose une édition spéciale "Art urbain" pour sa nouvelle gamme d'ordinateurs portables Studio 15 et Studio 17. Entièrement relookés par l'artiste Mike Ming, les deux portables mêlent un esthétisme unique à de nombreuses performances et... www.commentcamarche.net/actualites/breve-l-art-urbain-investit-les-ordinateurs-portables-5847204-actualite.php3
Les ventes de musique en ligne sous contrôleGrâce à cet outil, développé par la société YaCast, il sera désormais possible d'avoir une vision très précise du nombre de ventes en temps réel, afin par exemple de pouvoir établir un classement plus fiable que le "Top 50" actuel. Easy Rights... www.commentcamarche.net/actualites/les-ventes-de-musique-en-ligne-sous-controle-2275490-actualite.php3
Adresse IPQu'est-ce qu'une adresse IP Sur Internet, les ordinateurs communiquent entre eux grâce au protocole IP (Internet Protocol), qui utilise des adresses numériques, appelées adresses IP, composées de 4 nombres entiers (4 octets) entre 0 et 255 et... www.commentcamarche.net/contents/internet/ip.php3
Langage C++ - Les types de donnéesLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître... www.commentcamarche.net/contents/cpp/cpptype.php3
InfographieOn appelle infographie le domaine de l'informatique concernant la création et la manipulation des images numériques. L'infographie regroupe de nombreux savoirs, parmi lesquels la représentation des éléments graphiques (texte, image ou vidéo), ainsi... www.commentcamarche.net/contents/video/affich.php3