View previous topic :: View next topic |
Author |
Message |
Animatrix Guru


Joined: 13 May 2006 Posts: 480 Location: France - Gard (30)
|
Posted: Sat Feb 02, 2008 3:42 pm Post subject: [OFF] Complémentatio à deux |
|
|
Salut à tous !
Lorsqu'on associe à une variable un décimal, celui est alors codé en complémentation à 2, en binaire.
Je dois, à partir d'une complémentation à 2, sur x bits (signé) réussir à réaliser une conversion binaire <> décimale.
Pour cela, je dois utiliser les opérateurs de décalage et les opérateurs bits à bits.
J'ai beau regarder, j'arrive à "créer" la complémentation, mais faire le chemin inverse, impossible.
Pourriez-vous m'aider un peu ?
Merci |
|
Back to top |
|
 |
widan Veteran


Joined: 07 Jun 2005 Posts: 1512 Location: Paris, France
|
Posted: Sat Feb 02, 2008 7:51 pm Post subject: Re: [OFF] Complémentatio à deux |
|
|
Animatrix wrote: | Je dois, à partir d'une complémentation à 2, sur x bits (signé) réussir à réaliser une conversion binaire <> décimale.
Pour cela, je dois utiliser les opérateurs de décalage et les opérateurs bits à bits. |
Voilà les règles pour la représentation des nombres:
- Le nombre en binaire ressemble à ça:
Avec s le bit de signe (0 si positif, 1 si négatif) et v le reste de la représentation binaire (x-1 bits).
Si s=0, alors n est positif et v est sa représentation binaire.
Si s=1, alors n est négatif et v est la représentation binaire de 2^(x-1) - abs(n), et ~v (v avec tous les bits inversés) est la représentation binaire de abs(n)-1.
Quelques exemples (sur 8 bits):
Code: |
n | bin | signe | v | 2^(x-1)-v | ~v | valeur
-----+-----------+-------+-----+-----------+-------------+--------------
127 | 0 1111111 | 0=+ | 127 | - | - | 127
1 | 0 0000001 | 0=+ | 1 | - | - | 1
0 | 0 0000000 | 0=+ | 0 | - | - | 0
-1 | 1 1111111 | 1=- | 127 | 128-127=1 | 0000000=0 | -(0+1)=-1
-127 | 1 0000001 | 1=- | 1 | 128-1=127 | 1111110=126 | -(126+1)=-127
-128 | 1 0000000 | 1=- | 0 | 128-0=128 | 1111111=127 | -(127+1)=-128
|
|
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|