Vad är skillnaden i bär- och överflödsflagga under binär multiplikation?


Bästa svaret

I början måste vi betona dessa punkter:

  • ALU bryr sig inte om du gör signerad eller osignerad matematik.
  • ALU gör bara det binära matematik och ställer in flaggorna på lämpligt sätt.
  • I signed numbers teckenbiten är en bit som indikerar numret och det ligger i den viktigaste biten.

– I osignerad aritmetik, vi måste titta på bärflaggan för att upptäcka fel.

– I signerad aritmetik, vi måste se överflödesflaggan för att upptäcka fel.

Carry Flag är inställd om:

  • tillägget av två nummer orsakar en utförande av de viktigaste (längst till vänster) bitarna d.
  • 1111 + 0001 = 0000 => bärflagga är påslagen.
  • subtraheringen av två nummer kräver ett lån till det mest betydelsefulla (längst till vänster ) bitar subtraherade.
  • 0000 - 0001 = 1111 => bärflagga är påslagen.

Överflödesflagga ställs in om:

  • summan av två siffror med teckenbiten off ger ett resultat nummer med skyltbiten on.
  • 0100 + 0100 = 1000 => överflödesflaggan är påslagen.
  • summan av två siffror med teckenbiten on ger ett resultatnummer med teckenbiten off.
  • 1000 + 1000 = 0000 => överflödsflaggan är aktiverad.
  • Observera att : Mixed-sign tillägg slår aldrig på överflödesflaggan.

– för att göra det mer tydligt, låt oss se de två exemplen:

1- anta följande binära tillägg `0111 + 0010 = 1001 `

– om vi gör osignerad matematik

0111 + 0010 = 1001 // overflow flag is turned on.

7 + 2 = 9 // its ok, we only care about the carry flag

– om vi gör signerad matematik

0111 + 0010 = 1001 // overflow flag is turned on.

7 + 2 = -7 // error detected

2- antag följande binära tillägg `1111 + 0001 = 0000`

– om vi gör osignerad matematik

1111 + 0001 = 0000 // carry flag is turned on.

15 + 1 = 0 // error detected

– om vi gör signerad matematik

1111 + 0001 = 0000 // carry flag is turned on.

-1 + 1 = 0 // its ok we only care about the overflow flag

// remember: Mixed-sign addition never turns on the overflow flag.

slutligen kan du hitta mer info här: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Svar

Ur mekanisk synvinkel ställs bärflaggan in när det finns en utförande av den mest betydelsefulla biten. Överströmningsflaggan ställs in när det finns en till den viktigaste biten.

Med osignerad aritmetik behöver du bara oroa dig för bäringen flagga. Om något utförs av den mest betydelsefulla biten är resultatet för stort för att ingå i ett enda register.

För signerad aritmetik är situationen mer komplex. Överflöde inträffar när bärflaggan och överflödesflaggan är olika. Här är alla alternativ för tillägg på två bitar.

00 + 00 = 00, (0 + 0 = 0 decimal), CF = 0, OF = 0

01 + 01 = 10, (1 + 1 = -2 decimal) CF = 0, OF = 1 overflow

01 + 10 = 11, ( 1 + -2 = -1 decimal), CF = 0, OF = 0

01 + 11 = 00, ( 1 + -1 = 0 decimal), CF = 1, OF = 1

10 + 10 = 00, ( -2 + -2 = 0 decimal), CF = 1, OF = 0 overflow

10 + 11 = 01, ( -2 + -1 = 1 decimal), CF = 1, OF = 0 overflow

11 + 11 = 10, (-1 + -1 = -2 decimal), CF = 1, OF = 1

Observera att raderna 2, 5 och 6 ger felaktiga resultat på grund av överflöd och att dessa också är när CF skiljer sig från OF.

Vissa processorer kan göra den jämförelsen för dig och OF du ser kan vara resultat av att jämföra en intern inmatningsflagga med utfärgsflaggan. Det är fortfarande endast giltigt för signerad aritmetik.

Det fungerar även med annan aritmetik, inklusive multiplikation.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *