Vous êtes dans une rubrique du forum qui convient, mais il s'agit d'un forum sur l'automatisme et vous parlez de calcul binaire sans aucune application concrète.
Ce forum n'est pas réservé aux professionnels et vous êtes le bienvenu.
Mais automaticien c'est une profession. L'automatisme a été développé par et pour l'industrie avant tout. Donc nous sommes surtout aptes à vous aider à mettre en pratique dans une situation de programmation.
Développer des calculs en binaire
sur le papier, cela n'a aucun intérêt pour les automaticiens.
Quand un automate traite une mesure de température, nous travaillons et nous affichons une valeur décimale compréhensible par tous. Mais nous devons avoir conscience que les données sont limitées par le nombre de bits utilisés pour représenter la valeur.
Pour en revenir à votre question concernant la soustraction et le complément à 2 pour les nombres réels, itasoft vous a donné une piste : il suffit de multiplier les nombres pour ne plus avoir de virgule.
Par exemple, une température à 18,3°C pourra être mémorisée dans un nombre entier avec la valeur 183. Les calculs peuvent être faits avec des valeurs entières. Il suffit de noter qu'il s'agit de dixièmes de degrés et de bien respecter cette échelle.
Donc OUI vous pouvez appliquer le complément à 2 sur un nombre binaire à virgule en le traitant comme un nombre entier.
Prenons par exemple le calcul 1100,1 - 1,01.
Il est composé de :
- 1100,1 = 23 + 22 + 2-1 = 8 + 4 + 0,5 = 12,5
- 1,01 = 20 + 2-2 = 1 + 0,25 = 1,25
Le calcul se développe ainsi (si vous tenez VRAIMENT à utiliser le complément à 2, qui n'a toujours pas d'utilité à mes yeux) :
1100,1 - 1,01
= 1100,10 - 0001,01* Pour les 2 nombres on affiche la même quantité de bits à gauche et à droite de la virgule. Ensuite on fait comme s'il n'y avait pas de virgule mais je la laisse pour indiquer sa position.
= 1100,10 + 1110,10 + 0,01 - 10000,00* le complément de 000101 est 111010, on ajoute 1 (soit 0,01 avec la virgule) pour obtenir le complément à 2, et j'enlève la valeur dont je vous ai déjà parlé (qui est souvent cachée)
= 1011,01* Le résultat fait 11,25