Aller au contenu

1NSI : Nombres Binaires à Virgule (en Base 2)⚓︎

Contenus Capacités
Attendues
Commentaires
Représentation
approximative des
nombres réels : notion
de nombre flottant
Calculer sur quelques
exemples la représentation de
nombres réels : 0.1, 0.25 ou
1/3.
0.2 + 0.1 n’est pas égal à 0.3.
Il faut éviter de tester l’égalité de
deux flottants.
Aucune connaissance précise de
la norme IEEE-754 n’est exigible.

Cette partie présente quelques rappels utiles pour mieux appréhender cette notion.

Nombres Binaires à Virgule (en base 2)⚓︎

A l'instar des notations des nombres décimaux (en base \(10\)) qui sont des sommes de puissances de \(10\) (positives ou négatives), on peut utiliser la notation de nombres binaires à virgule (en base \(2\)) qui sont des sommes de puissances de \(2\) (positives ou négatives).

Conversion Nombre Binaire à Virgule \(\rightarrow\) Nombre Décimal (à Virgule)

On se donne un nombre binaire à virgule, par exemple, \(x=101,1101_2\), et on veut savoir comment l'écrire comme nombre décimal (à virgule, en base \(10\)) ?
\(x=101,1101_2\) est le nombre binaire à virgule (en base 2) dont l'écriture décimale (en base 10) est:
\(x=(1\times2^2+0\times2^1+1\times2^0+1\times2^{-1}+1\times2^{-2}+0\times2^{-3}+1\times2^{-4})_{10}\)
\(x=1\times2^2+1\times2^0+1\times2^{-1}+1\times2^{-2}+1\times2^{-4}\) donc
\(x=4+1+0,5+0,25+0,0625\)
\(x=5,8125_{10}\)

Conversion Nombre Décimal (à Virgule) \(\rightarrow\) Nombre Binaire à Virgule

On se donne un nombre réel \(x\) (en génral un nombre Décimal à virgule), en base \(10\), par exemple, \(x=57,85_{10}\), et on veut savoir comment l'écrire comme nombre Binaire à Virgule (en base \(2\)) ?

  • On sépare \(x=57,85\) en la somme de sa partie entière \(\lfloor x \rfloor = 57\) et de sa partie fractionnaire \(f=\{x\} = 0,85\)
  • On convertit la partie entière \(\lfloor x \rfloor = 57\) en binaire avec les techniques usuelles déjà vues [^1], càd en divisant successivement par \(2\) jusqu'à parvenir à un quotient \(q=0\) : On conserve les restes des divisions par \(2\) successives.
    Conclusion (Partie Entière) :

    \(57_{10} = 111001_2\)

    En effet :

    57 | 2  -> reste 1        ∧
    28 | 2  -> reste 0        |
    14 | 2  -> reste 0        |
    7  | 2  -> reste 1        |  (sens de lecture)
    3  | 2  -> reste 1        |
    1  | 2  -> reste 1        |
    0  | 2  -> (q=0, donc     | 
        ne pas conserver)     |
    
  • On convertit la partie fractionnaire \(f=\{x\} = 0,85\) en binaire (à virgule) en multipliant successivement par \(2\). On conserve à chaque étape :

    • le \(0\) ou le \(1\) de la partie entière du (nouveau) résultat (partiel) après multiplication par \(2\)
    • On multiplie la nouvelle partie fractionnaire par \(2\)
    • Pour la Terminaison de ce procédé, \(3\) situations distinctes peuvent se produire :

      • Soit la partie fractionnaire \(f\) finit par devenir nulle (\(f=0,0\)) : C'est le cas d'une écriture binaire avec un nombre limité de chiffres après la virgule ("ça tombe juste" - en binaire-, par exemple : \(0,110101\))

        Exemple : Convertir 0.8281125 en Binaire à Virgule
        Conserver '0,' puis :
        0.828125*2 = 1.65625 -> conserver 1
        0.65625*2 = 1.3125   -> conserver 1
        0.3125*2 = 0.625     -> conserver 0
        0.625*2 = 1.25       -> conserver 1
        0.25*2 = 0.5         -> conserver 0
        0.5*2 = 1.0          -> conserver 1
        Partie Fractionaire nulle, donc le procédé s'arrête et 
        le Nombre Binaire admet un nombre fini de chiffres après la virgule
        ------------
        

        Conclusion : \(0,828125_{10} = 0,110101_2\)

      • Soit la partie fractionnaire se répète au bout d'un certain temps, on obtient alors une période de la partie fractionnaire binaire (nombres rationnels binaires) : c'est le cas des nombres binaires avec un développement binaire périodique (par ex : \(101, 11\underline{1011}\))

        Exemple : Convertir 0.85 en Binaire à Virgule
        Conserver '0,' puis :
        0.85*2 = 1.7 -> conserver 1
        0.7*2 = 1.4  -> conserver 1
        0.4*2 = 0.8  -> conserver 0
        0.8*2 = 1.6  -> conserver 1
        0.6*2 = 1.2  -> conserver 1
        0.2*2 = 0.4  -> conserver 0
        Répétition de la mantisse 0.4 à l'indice 2
        donc le Nombre Binaire est Périodique, de période 0110
        ------------
        

        Conclusion (Partie Fractionnaire):

        \(0,85_{10} = 0,11\underline{0110}_2\)

      • Soit la partie fractionnaire ne devient jamais nulle, et ne se répète jamais (nombres binaires irrationnels, c'est possible..) : c'est le cas des nombres binaires avec un développement binaire non périodique. Dans ce cas, on choisira de s'arrêter lorsque la précision à atteindre nous semblera suffisante. Ce cas est plus compliqué, et requiert en fait de partir d'un nombre réel \(x\) lui-même avec un développement décimal illimité (car \(10=2\times 5\) est un multiple de \(2\)). Il ne sera pas utilisé en pratique.

  • Conclusion (Générale) :

    \(57,85_{10} = 111001,11\underline{0110}_2\)