Conversion Décimal/binaire sur n Bit

Résolu/Fermé
MasterOfPupp - 3 sept. 2013 à 20:18
 MasterOfPupp - 3 sept. 2013 à 21:24
Bonjour,
j'ai récemment vu quelque part qu'un décimal t ne peut être converti sur n Bits que sur l'intervalle :
-2^(n - 1) + 1 < t < 2(n - 1) - 1 (inférieur ou égal le signe)
Ce n'est pas plutôt -2^(n) + 1 < t < 2(n) - 1, car par exemple on sait tous que 127 peut bien se coder sur 8 bits, alors que selon la première formule la limite maximale à 8 Bits serait 63 (2^(7) - 1).



A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
3 sept. 2013 à 20:22
Le bon intervalle est [-2^(n-1); 2^(n-1)-1]

Pour reprendre ton exemple avec n=8 bits cela donne bien [-128; 127]
1
Merci autant pour moi je viens de me rendre compte que je faisais 2^7 = 64 ...
Et comment tu fais pour coder -128 sur 8 bits, car on ne peut pas le faire avec la méthode du complément à 2.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
3 sept. 2013 à 21:07
Si, tu peux faire un complément à 2 pour -128.

Tu prends 128 : 1000 0000
complément à 1 : 0111 111
complément à 2 : 1000 000

Cette valeur est comme les autres, compatibles avec l'addition.
0
Comme tu viens de le dire tu ne peux pas coder 128 sur 8 bites [-128; 127], donc la méthode ne fonctionne pas non ? (ou alors je mélange tout)

EDIT : ou alors ça se code sur 9 bits en 110000000
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 3/09/2013 à 21:22
Le 128 = 1000 0000 que tu prends comme référence, c'est du binaire "normal", avec un nombre de bits "infinis", le binaire en complément à 2 c'est le résultat que tu obtiens après les deux étapes.

Donc tu peux tout à fait avoir -128 en complément à 2.

De plus comme je l'ai dit, toutes ses valeurs sont compatibles avec l'addition, donc on peut aussi obtenir -128 par addition :

(-64) + (-64) = -128
1100 0000 + 1100 0000 = 1000 0000
0
okay merci c'est bon je vois le principe ^^
0