Ajouter le négatif et le positif binaire?
X = 01001001 et Y = 10101010
Si je veux les ajouter ensemble, comment dois-je faire? Ils sont "Complément à Deux"...
J'ai essayé beaucoup de choses, mais je ne suis pas tout à fait sûr que je suis d'obtenir la bonne réponse puisqu'il semble être différent type de règles.
Voulez juste pour s'assurer qu'il est correct:
1. Ajoutez-les comme ils sont ne pas convertir le négatif
2. Convertir le nombre négatif que vous obtenez et c'est la somme.
f.eks
01001001+10101010 = 11110011 => 00001100 => 1101 => -13
Ou?
1. Convertir le négatif
2. Ajoutez-les ensemble et à convertir le négatif
f.eks
01001001+10101010 => 01001001 + 01010110 => 10011111 => 01100001 => -97
Donc, fondamentalement, ce que je veux faire est de prendre: X-Y et X+Y
Quelqu'un peut me dire comment faire cela?
Certains sites de ressources:
étudiant-binaire
celtickane
swarthmore
OriginalL'auteur suxSx | 2008-12-06
Vous devez vous connecter pour publier un commentaire.
La beauté de complément à deux est que au niveau binaire, c'est une question d'interprétation plutôt que l'algorithme de la matériel pour l'ajout de deux nombres signés est le même que pour les nombres non signés (en ignorant drapeau bits).
Votre premier exemple: "il suffit d'ajouter" - c'est exactement la bonne réponse. Votre exemple des numéros de
Donc, la bonne réponse est en effet -13.
La soustraction est la même, dans la mesure où aucun traitement spécial n'est requis pour le complément à deux chiffres: "soustraire".
Noter que là où les choses deviennent intéressantes est la manipulation de débordement/type dépassement de bits. Vous ne pouvez pas représenter le résultat de 73 - (-86) comme un 8 bits en complément à deux du nombre...
La soustraction de nombres non signés est la même que la soustraction de nombres signés.
Ah, j'ai donc suivre la même règle pour la soustraction et de les convertir en fin de compte comme je l'ai fait avec le addding partie 🙂
Il n'y a pas de "conversion" nécessaire à la fin. La valeur que vous avez obtenu "11110011" simplement " de -13.
la soustraction n'est pas la "même" que l'ajout d', il;s le même que subyrcating tous les autres nombres, Juste soustraire chaque chiffre (chaque bit) sur le fond de la correspondante peu sur le haut, borrrowing de l'bits vers la gauche si vous êtes tryinmg de soustraire 1 à partir de 0... comme vous le feriez pour une soustraction décimale
OriginalL'auteur Roddy
Ajouter en complément à deux ne nécessite pas de traitement spécial lorsque les signes des deux arguments sont à l'opposé. Vous ajoutez simplement comme vous le feriez normalement en binaire, et le signe du résultat est le signe que vous gardez.
OriginalL'auteur Bill the Lizard
Et juste pour s'assurer que vous comprenez en complément à deux, pour convertir à partir d'un positif à un nombre négatif (ou vice versa): inverse chaque bit, puis ajouter 1 au résultat.
Par exemple, votre nombre positif X = 01001001 devient 10110101+1=10110110 comme un nombre négatif; votre nombre négatif Y = 10101010 devient 01010101+1=01010110 comme un nombre positif.
Soustraire Y à partir de X, nier et Y rajouter. I. E. 01001001 + 01010110.
OriginalL'auteur Mark Ransom
Votre confusion pourrait être en raison de la largeur du nombre de personnes concernées. Pour obtenir une meilleure idée de ce que vous pourriez essayer de créer un nombre entier signé de votre entier non signé.
Si le MSB de votre entier non signé est déjà à 0, alors vous pouvez le lire comme signé et obtenir le même résultat.
Si le bit de poids fort est à 1, alors vous pouvez ajouter un 0 à gauche pour obtenir un signé nombre. Vous devez vous inscrire étendre (qui est, d'ajouter des 0 si le bit de poids fort est de 0, ajouter 1 si le bit de poids fort est à 1) tous les nombres signés pour obtenir un certain nombre de la même largeur, de sorte que vous pouvez faire de l'arithmétique "normalement".
Par exemple, à l'aide de vos numéros:
X = 01001001: non signé, le MSB est à 0, ne rien faire.
Y = 10101010: Signé, n'a rien fait avec X, encore ne rien faire.
Mais si on change le bit de poids fort de X à 1:
X = 11001001: non signé, le MSB est à 1, Ajouter un 0 --> 011001001
Y = 10101010: Signé, extended X, donc inscrivez-Y étendre --> 110101010
Maintenant, vous avez deux nombres signés que vous pouvez ajouter ou soustraire de la manière que vous savez déjà.
OriginalL'auteur Nathan Fellman