Question

Je regarde quelques grandes conférences de David Malan ( ) qui va plus binaire. Il a parlé signé / non signé, compliment de 1, et les représentations du complément de 2. Il y avait un ajout fait de 4 + (-3) qui aligné comme ceci:

0100
1101 (flip 0011 to 1100, then add "1" to the end)
----
0001

Mais il agita ses mains magiques et a jeté le dernier bagage. Je l'ai fait un peu peu de recherche wikipedia n'a pas tout à fait obtenir, quelqu'un peut me expliquer pourquoi ce transport particulier (dans le 8 - colonnes de> 16)? A été abandonné, mais il a gardé celui juste avant elle

Merci!

Était-ce utile?

La solution

Le dernier report a été abandonné car il ne rentre pas dans l'espace cible. Ce serait le cinquième bit.

S'il avait procédé à la même addition, mais avec par exemple 8 bits de stockage, il aurait ressemblé à ceci:

00000100
11111101
--------
00000001

Dans ce cas, nous serions également coincés avec un bagage « inutilisé ».

Nous devons traiter porte cette façon de faire plus de deux travaux de compliment bien, mais c'est tout bon, parce que c'est la meilleure façon de traiter porte lorsque vous avez le stockage limité. Quoi qu'il en soit, nous obtenons le résultat correct, à droite:)


magasin x86-processeurs un tel portage supplémentaire dans le drapeau de transport (CF), ce qui est possible de tester certaines instructions.

Autres conseils

Un report n'est pas identique à un trop-plein

Dans l'exemple que vous avez un report de la MSB. Par définition, ce report se termine sur le sol. (S'il y avait un endroit pour elle d'aller, alors il aurait été hors du MSB.)

Mais l'ajout de deux chiffres avec des signes différents ne peut pas déborder. Un débordement ne peut se produire lorsque deux chiffres avec le même signe produisent un résultat avec un signe différent.

Si vous étendez le côté gauche en ajoutant des positions de chiffres, vous verrez que les rouleaux de INTEMPOREL dans un nombre infini de positions de bits vers la gauche, de sorte que vous ne récupéreront jamais un report final de 1. Ainsi, le réponse est positive.

 ...000100
+...111101
----------
....000001

À un certain moment, vous devez définir le nombre de bits pour représenter les nombres. Il a choisi 4 bits. Tout report dans le 5ème bit est perdu. Mais c'est OK parce qu'il a décidé de représenter le nombre en seulement 4 bits.

S'il a décidé d'utiliser 5 bits pour représenter les chiffres qu'il aurait obtenu le même résultat.

C'est la beauté de ... Votre résultat sera la même taille que les termes que vous ajoutez. Ainsi, le cinquième bit est jeté

En complément de 2 utiliser le bit de report pour signaler s'il y avait un débordement dans la dernière opération.

Vous devez regarder les DERNIERS deux bits de report pour voir s'il y avait débordement. Dans votre exemple, les deux derniers bits de report ont été 11 ce qui signifie qu'il n'y avait pas de débordement.

Si les deux derniers bits de report sont 11 ou 00 alors aucun débordement a eu lieu. Si les deux derniers bits de report sont 10 ou 01 puis il y avait trop-plein. Voilà pourquoi parfois il se souciait peu du carry et d'autres fois il l'ignora.

La première ligne est au-dessous de la ligne de transport. La gauche bits les plus de cette ligne sont utilisés pour déterminer s'il y avait dépassement.

1100
 0100
 1101
 ----
 0001

On dirait que vous utilisez seulement 4 bits, donc il y a la colonne n ° 16.

Si vous utilisez plus de 4 bits, puis la représentation de -3 serait différent, et le report des mathématiques serait encore jeté à la fin. Par exemple, avec 6 bits vous auriez:

 000100
 111101
 ------
1000001

et que le report est en dehors de la portée de votre représentation binaire, il est parti, et vous n'avez 000001

Tenez compte 25 + 15:

5 + 5 = 10, nous gardons le 0 et laisser le 1 aller à la colonne des dizaines. Ensuite, il est 2 + 1 (+ 1) = 4. Par conséquent, le résultat est 40:)

Il est la même chose avec les binaires. 0 + 1 = 1, 0 + 0 = 0, 1 + 1 = 10 => envoyer le 1 8 colonnes, 0 + 1 (+ 1) = 10 => envoyer le 1 à la colonne suivante - Voici le trop-plein et pourquoi nous venons de lancer le 1 loin.

Ceci est la raison pour laquelle le complément de 2 est si grand. Il vous permet d'ajouter / substract comme vous le faites avec la base-10, parce que vous (ab) utilisez le fait que le bit de signe est le MSB, qui les opérations en cascade jusqu'au trop-pleins, quand nessecary.

L'espoir que je me suis fait comprendre. Très difficile à ExpLAN quand l'anglais ne vous langue maternelle:)

Lorsque vous effectuez l'ajout du complément de 2, la seule fois qu'un portage indique un problème est quand il y a une condition de dépassement -. Qui ne peut pas se produire si les 2 opérandes ont un signe différent

Si elles ont le même signe, la condition de débordement est quand le bit de signe des 2 opérandes, par exemple., Il y a un report dans le bit le plus significatif .

Si je me souviens de mon architecture informatique Learnin' ce qui est souvent détectée au niveau du matériel par un drapeau qui est défini lorsque le report dans le bit le plus significatif est différent que le report de bit le plus significatif . Ce qui est pas le cas dans votre exemple (il y a un report dans le msb ainsi que de la msb).

Une façon simple de penser est « le signe ne change pas ». Si le report dans le msb est différent de mener à bien, le signe a changé de manière incorrecte.

Le report a été abandonné parce qu'il n'y avait rien qui pouvait être fait avec elle. S'il est important de le résultat, cela signifie que l'opération débordait la plage de valeurs qui pourraient être stockées dans le résultat. En assembleur, il y a habituellement une instruction qui permet de tester le report au-delà de la fin du résultat, et vous pouvez explicitement traiter là - par exemple, la réalisation dans la prochaine partie supérieure d'un multiple valeur de précision

.

Parce que vous parlez de 4 représentations de bits. Il est unussual par rapport à une machine réelle, mais si nous devions prendre pour acquis qu'un ordinateur dispose de 4 bits dans chaque octet pour un moment, nous avons les propriétés suivantes: un octet de 15 à enveloppe -15 ° C. Rien en dehors de cette plage ne peut pas être stocké. D'ailleurs, que feriez-vous avec un peu 5 supplémentaire au-delà du bit de signe de toute façon?

Maintenant, étant donné que, nous pouvons voir des mathématiques tous les jours que 4 + (-3) = 1, ce qui est exactement ce que vous avez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top