2010-04-27 18 views
3

Les valeurs binaires sont sous la forme Complément 2s.Ajout binaire. Est-ce débordement?

Si je dois ajouter 110001 (-15) et 101110 (-18), et que la réponse doit être stockée dans un entier de 6 bits, s'agit-il d'un dépassement de capacité/débordement.

+3

Est-ce une question de devoirs? – Amber

+0

Oui, c'est. Mais je l'ai résolu, obtenu une réponse de, en décimal, -33. Comme la plage inférieure d'un entier de complément à 2 bits de 6 bits est -32, selon moi c'est un sous-débit, mais selon mon prof. notes de solution, ce n'est pas. Je veux juste confirmer. – xbonez

Répondre

2

Ceci est débordement, votre professeur est correct. Vous stockez plus de bits qui peuvent être conservés dans l'espace alloué (même si le nombre que les bits représentent est négatif.)

Le sous-flux est lorsque les bits sont mis à zéro par un décalage sur les grands maths. Très commun en maths à virgule fixe. Divisez un très petit nombre par un très grand nombre et vous obtiendrez souvent un 0. C'est un débordement.

+0

+1 C'est ce que j'allais dire. Le sous-dépassement est un concept différent, plus communément lié aux mathématiques en virgule flottante. –

0

EDIT: Je viens de réaliser que -33 est trop grand pour 6 bits, donc le résultat est -33 mais +31, et il est donc sans aucun doute un trop-plein :)

Ajout de deux nombres et obtenir le résultat correct si certainement pas un débordement. Un exemple de dépassement de capacité consiste à ajouter deux nombres négatifs et à obtenir un résultat positif (ou vice versa). Par exemple, si vous ajoutez les deux nombres positifs 0x7fffffff et 0x00000001, vous obtenez le nombre négatif 0x80000000, ce qui est absolument faux et donc un débordement.

Peut-être que vous confondez débordement avec carry?

1

Il y a un bon exemple discuté pour ajouter deux registres avec le contenu -70 et -90 et le stocker dans le troisième registre.

Let's assume R1[8 bits] = -70 R2[8 bits] = -90 Result[9 bits] = -160, an extra bit for overflow.

Cet exemple est à la page de overflow_signed_detection sur ref 1 ci-dessous. Avec les règles présentées sur cette page, l'exemple peut être mis à l'échelle de deux nombres décimaux quelconques.