Débordement/dépassement de capacité en nombres non signés

Donc, si vous avez un report de 1 sur plus avec des nombres non signés, vous avez débordé, et si vous avez un report de 0 avec la soustraction, vous avez underflowed. Cela fonctionne dans tous les cas, si?

Si vous ne 5-0:
0101
-0000

=
0101
+(1111 + 1)

=
0101
+0000

= 0101... il y a un report de zéro ici, au lieu de 1. Comment fait-on tenir compte de ce cas? Est-il un autre moyen de le faire?

(à l'aide d'architecture MIPS, ou quoi que ce soit d'autre)

---Edit

Grâce Amadan. Je comprends que, quoique. Mon problème est juste que zéro semble être un cas particulier. Il ne semble pas suivre qu'un nombre normal de faire: dans mon exemple ci-dessus, il n'y a pas de report de 1.

Je suis en train de faire la conception de circuits de travail avec un ALU pour le moment et essayer de mettre en œuvre la détection de débordement, lorsque ce cas, qui ne suit pas ce que les autres font.

Nous supposons qu'avec la soustraction, le second opérande est preinverted (complément à deux) avant d'aller dans l'ALU (alors ajouté à la première opérande). Donc, chaque fois que le "invert_b" pour la soustraction est définie sur 1, b est inversée et nous supposons que le cas, nous sommes de vérification pour la soustraction, ce qui devrait avoir un report de 1.

  • Je ne comprends pas la question. L'ajout d'un positif et un nombre négatif ne peut jamais résulter en vertu de l'/débordement.
  • Ajouté un peu plus d'info.. j'espère que ça efface tout cela.
  • Ce que @davin a dit. Je ne sais pas comment ils font dans les Processeurs, mais en l'inversant un zéro doit toujours vous donner un report (1111 + 1 = (1)0000), donc dire que -0 = 0 n'est pas tout à fait correct si vous utilisez en complément à deux pour la soustraction fins.
  • Mais si nous convertissons en complément à deux avant de faire la soustraction, 0 est juste 0000 encore.. et puis on ajoute par la suite, et depuis le circuit pense que nous sommes en soustrayant il sera à la recherche de dépassement de capacité si pas de porter... c'est là que je suis confus. J'espère que je ne suis pas donnant sur quelque chose que vous les gars ont déjà mentionné.
  • Ce n'est pas seulement 0000 à nouveau. La soustraction des causes de l'additionneur pour ajouter le numéro d'origine et 1111+1 qui est 0000 avec un report de 1, de sorte que le porteur est à l'opposé de la normale en cas d'ajout de 0000. Par conséquent, le résultat est inverse, ce qui est logique, car alors il y aura des underflow le forum, il y aurait dépassement de capacité dans le cas d' +0. Car, dans le cas original de +0, il ne peut pas être un report de 1, il n'y aura pas de débordement, et par symétrie le cas d' +0000 avec un report de 1 portera toujours 1 et donc jamais underflow.
InformationsquelleAutor Risshuu | 2011-10-21