Introduction
Comme nous l'avons vu précédemment, de nombreuses valeurs ne peuvent pas être représentées en binaire de façon exacte, comme (0.4)10 ou (42.42)10.Pour remédier à cela, plusieurs solutions :
- abandonner définitivement la base 10 et apprendre à compter en binaire dès le cours préparatoire...
- utiliser des représentations en virgule flottante dont la mantisse comporte suffisamment de bits pour que l'erreur commise soit acceptable (dépend de l'application, et il faut également tenir compte des erreurs commises lors des manipulations de mantisses) :
type valeur de (0.4)10 erreur float 0.39999997615814208984375 2.4 × 10-8 double 0.3999999999999994670929481799 5.3 × 10-16
- utiliser le codage DCB.
Codage DCB
Puisque la conversion décimal -› binaire ne permet pas de représenter les valeurs souhaitées, on ne convertit pas le nombre globalement, mais chacun des chiffres décimaux individuellement.
exemple : codage DCB de (396.4)10
3 | 9 | 6 | 4 |
- bien que la représentation utilise des bits, on reste en base 10. Il n'y a donc plus de perte de précision lors de la conversion.
- gaspillage de l'espace de stockage : chaque chiffre décimal étant représenté sur 4 bits, on n'utilise que 10 des 16 combinaisons binaires possibles.
- opérations arithmétiques coûteuses
Les inconvénients du DCB sont tels que l'on en limitera l'usage à des applications qui ont réellement besoin de la précision supplémentaire, comme par exemple les applications financières.