Je veux obtenir le nombre opposé de nombre binaire (signifie x -> - (x) et - (x) -> x).numéro binaire opposé
Quel sera l'algorithme? J'ai pensé à changer tous les bits ("1" à "0" et "0" à "1") et ajouter "1" à cela. Est-ce que c'est bon ?
thnx
Je veux obtenir le nombre opposé de nombre binaire (signifie x -> - (x) et - (x) -> x).numéro binaire opposé
Quel sera l'algorithme? J'ai pensé à changer tous les bits ("1" à "0" et "0" à "1") et ajouter "1" à cela. Est-ce que c'est bon ?
thnx
Votre algorithme est correct pour deux des numéros de complément:
-x = ~x + 1
Pour un complément à, vous pouvez utiliser:
-x = ~x
Et pour les nombres signe magnitude:
-x = x^(1 << n)
Où n
est le décalage du bit de signe dans le mot. J'utilise la notation de l'opérateur C ici - ^
est l'opérateur exclusif au niveau du bit ou <<
est un décalage vers la gauche.
Pour une autre représentation numérique, vous devez utiliser une autre opération.
Pouvez-vous me fournir avec un meilleur algorithme? thnx – Batman
@Adam D - il n'y a pas de "meilleur algorithme". Dans n'importe quel langage raisonnable, vous pouvez simplement écrire '-x', alors pourquoi faire autre chose que cela? –
@Adam D meilleur algorithme? Cela sonne comme un devoir ... –
Cela dépend de la façon dont les nombres négatifs sont représentés. Vous avez besoin de la représentation du complément à deux? Vous avez besoin d'une représentation de complément?
Pour plus de détails, consultez wikipedia
En fait, c'est pour un programme d'assemblage MIPS je vous écris que changer un nombre dans $ s0 à son opposé, alors quoi de mieux? – Batman
Pourquoi ne pas simplement faire $ s0 = 0 - $ s0. Ensuite, vous n'avez pas à vous soucier de la façon dont les nombres négatifs sont représentés. Vous saurez avec certitude que votre résultat est le bon, quelle que soit l'architecture de votre processeur. –
Vous pouvez google que: http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary#neg –