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 peux 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
# C'est pourtant simple ...
Posté par totof2000 . Évalué à 3.
Explication: pour obtenir le complément a deux d'un nombre:
on fait le complément à un du nombre binaire, et on ajoute 1
0101 codage de 5 en binaire
1010 complément à un
1011 on ajoute 1 : représentation de -5 en complément à deux
Pour faire l'inverse:
1011 on ajoute 1 : représentation de -5 en complément à deux
0100 complément à 1
0101 on ajoute 1
Après il faut savoir que, en binaire,
5=1*2^0+0*2^1+1*2^2+0*2^3
Note que la notion de complément à deux nécessite de définir un format de données (dans notre exemple, 4 bits), et que le bit de poids forts est le bit de signe (=0: Nombre positif, =1, nombre négatif).
A partir de la, pour transformer un nombre binaire (positif ou négatif) il faut:
1 déterminer son signe en fonction du bit de signe
2 si négatif, positionner le signe à "-" et effectuer le omplément a 2 de ta valeur (pour obtenir la valeur positive.
3/ Si positif, mettre le signe à "+"
4 convertir la valeur binaire (soit originelle si le bit de signe est à 0, soit celle issue de l'étape 2 si bit de signe=1) en décimal.
- prendre en compte le signe détermoné a l'étape 2 ou 3
J'espère que ça répond à tes questions.
Sinon pour comprendre e complément à deux:
Toujours sur 4 bits: 0=0000b=0x0. OK?
Retire 1 à cette valeur: sur 4 bits, tu obtiens en binaire 1111, ou 0xf en hexa, soit -1 en decimal.
Complément à deux de 1111:
1111 valeur initiae.
0000 Complément à 1
0001 on ajoute 1
compris ?
[^] # Re: C'est pourtant simple ...
Posté par Animatrix . Évalué à 1.
J'ai compris comment passer de l'un à l'autre.
Mais on me demande d'utiliser les opérateurs de décalage ou bits à bits, tu saurais comment faire ?
Merci
[^] # Re: C'est pourtant simple ...
Posté par totof2000 . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.