Le mode de codage que tu décris est de type "à virgule fixe" , le nombre de "binales" (? ~= "décimales) est fourni, en général, dans les formats de lecture ou d'écriture, voir les déclarations de zones (du Cobol).
Comment décomposer 5,37 :
...
contient : _______4 (2 puiss 2) : oui ---> 1
contient : _______ 2 (2 puiss 1) : non ---> 0
contient : _______1 (2 puiss 0) : oui ---> 1
contient : _____0.5 (2 puiss -1) : non---> 0
contient : ____0.25 (2 puiss -2) : oui ---> 1
contient : ___0.125 (2 puiss -3) : non---> 0
résultat : 101.010
Comme en décimal, il y a des problèmes de troncatures et d'arrondi. De même nature que la division par 3 (....,3333...).
Dans ton exemple, la valeur la plus proche serait : 101.011 (à régler par hard ou soft). Le problème se pose effectivement dans les opérations faisant intervenir des grands nombres avec de très petits (comme la différence de 2 produits : a1*x1 - a2*x2, opérations fréquentes dans le calcul matriciel). C'est même une spécialité que de mettre en place des méthodes de calcul de ce type.