Codage des nombres
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Codage des nombres



  1. #1
    i231

    Smile Codage des nombres


    ------

    Bonjour à tout le monde!

    J'ai une petite question concernant le codage des nombres sur Python...
    Pourquoi dans certains cas (nombres finis en 0 ou en 5, par exemple: 0,75) l'erreur de codage est nulle? Alors que d'autres réels comme 0,1 n'ont qu'un nombre limité de chiffres significatifs?

    Merci de votre réponse et bonne journée!

    -----

  2. #2
    CM63

    Re : Codage des nombres

    Bonjour,

    Dans un premier temps la réponse qui m'est venue à l'esprit était de dire que 0.75 est un nombre rationnel, mais cette réponse n'est pas correcte, puisque 0,1 est aussi rationnel. Peux-tu nous donner un exemple, avec des sorties de Python, afin de préciser ta question?

  3. #3
    PA5CAL

    Re : Codage des nombres

    Bonsoir

    Cette particularité n'est pas spécifique à Python, mais au matériel informatique utilisé.

    Les nombres à virgule flottante sont en effet codés à l'aide d'un bit de signe et de deux séries de bits représentant l'exposant en base 2 et la mantisse. En d'autres termes, quand un nombre peut être exprimé sous la forme :

    (–1)s × 1,m × 2(e-N)

    (avec N=127 pour une représentation en simple précision ou N=1023 en double précision), on stocke les bits représentatifs des valeurs de s, m et e (dans l'ordre s|e|m). (NB : la valeur 0 est représentée par s=0, m=0 et e=0.)

    Par exemple, la valeur 0,75 vaut (–1)0 × 1,1 × 2–1. En simple précision elle sera représentée par s=0, m=10000000000000000000000b et e=01111110b, et stockée en mémoire sur 32 bits sous la valeur binaire 0x3F400000.

    Dès lors que la valeur peut, dans la limite des bits disponibles, être représentée sous la forme du rapport entre un nombre entier et une puissance de 2, alors son codage est exact. Dans le cas contraire, ce codage induit une erreur d'arrondi de la mantisse.

    Par exemple, la valeur 0,2 est égale à 1/5 et ne peut donc pas être écrite sous la forme indiquée ci-dessus. Par conséquent, en simple précision on prend la valeur approchée 50331658388608/223, qui est représentée par s=0, m=10011001100110011001101b et e=01111100b, soit approximativement (–1)0 × 1,6000000238... × 2–3, et qu'on stocke en mémoire sur 32 bits sous la valeur binaire 0x3E4CCCCD.
    Dernière modification par PA5CAL ; 01/11/2018 à 17h20.

  4. #4
    PA5CAL

    Re : Codage des nombres

    Oups... il faut lire : « la valeur 0,75 vaut (–1)0 × 1,5 × 2–1 »

  5. A voir en vidéo sur Futura
  6. #5
    PA5CAL

    Re : Codage des nombres

    PS : Python utilise généralement le codage en double précision (stockage sur 64 bits). Le principe est le même, mais l'explication m'aurait obligé à écrire des mantisses binaires près de deux fois plus longues.
    Dernière modification par PA5CAL ; 01/11/2018 à 17h40.

  7. #6
    invite73192618


Discussions similaires

  1. codage des nombres
    Par zpaul dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 08/03/2016, 09h08
  2. Codage en binaire des nombres signés
    Par artemis16 dans le forum Électronique
    Réponses: 9
    Dernier message: 06/10/2015, 19h49
  3. Distance entre deux nombres premiers pour des nombres très grands
    Par FibreTigre dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 12/06/2013, 21h56
  4. TPE sur le pixels, codage binaire, codage hexadécimal..
    Par invite2dd170e6 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 09/11/2012, 16h16
  5. codage de nombres
    Par invite1bc1ddb5 dans le forum Logiciel - Software - Open Source
    Réponses: 31
    Dernier message: 03/05/2007, 01h02