Hva er forskjellen i bære- og overløpsflagg under binær multiplikasjon?


Beste svaret

I begynnelsen må vi understreke disse punktene:

  • ALU bryr seg ikke om du gjør signert eller usignert matematikk.
  • ALU gjør bare binær matematikk og setter flaggene riktig.
  • I signed numbers tegnbiten er en bit som indikerer tegnet på nummeret. og det ligger i den viktigste biten.

– I usignert aritmetikk, vi må se bæreflagget for å oppdage feil.

– I signert aritmetikk, vi må se på overløpsflagget for å oppdage feil.

Bæreflagg er satt hvis:

  • tillegg av to tall fører til en utføring av de viktigste (lengst til venstre) bitene d.
  • 1111 + 0001 = 0000 => bæreflagg er slått på.
  • subtraksjonen av to tall krever et lån til det mest betydningsfulle (lengst til venstre ) biter trukket.
  • 0000 - 0001 = 1111 => bæreflagg er slått på.

Overløpsflagg angis hvis:

  • summen av to tall med tegnbiten off gir et resultat nummer med skiltbiten on.
  • 0100 + 0100 = 1000 => overløpsflagg er slått på.
  • summen av to tall med tegnbiten on gir et resultatnummer med tegnbiten off.
  • 1000 + 1000 = 0000 => overløpsflagg er slått på.
  • Merk at : Blandet tegn tillegg slår aldri på overløpsflagget.

– for å gjøre det mer tydelig, la oss se de 2 eksemplene:

1- anta følgende binære tillegg `0111 + 0010 = 1001 `

– hvis vi gjør usignert matematikk

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

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

– hvis vi gjør signert matematikk

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

7 + 2 = -7 // error detected

2- anta følgende binære tillegg `1111 + 0001 = 0000`

– hvis vi gjør usignert matematikk

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

15 + 1 = 0 // error detected

– hvis vi gjør signert matematikk

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.

til slutt kan du finne mer info her: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Svar

Fra et mekanistisk synspunkt settes bæreflagget når det er en gjennomføring av den mest betydningsfulle biten. Overløpsflagget settes når det er en til den viktigste biten.

Med usignert aritmetikk trenger du bare å bekymre deg for å bære flagg. Hvis noe blir utført av den mest betydningsfulle biten, er resultatet for stort til å være inneholdt i et enkelt register.

For signert aritmetikk er situasjonen mer kompleks. Overflyt oppstår når bæreflagget og overløpsflagget er forskjellige. Her er alle alternativene for tillegg på to biter.

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

Merk at linjene 2, 5 og 6 gir feil resultater på grunn av overløp, og at disse også er når CF er forskjellig fra OF.

Noen prosessorer kan gjøre den sammenligningen for deg og OF du ser kan være den resultat av å sammenligne et internt innføringsflagg med gjennomføringsflagget. Den vil fortsatt bare være gyldig for signert regning.

Den fungerer også med annen regning, inkludert multiplikasjon.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *