Hvad er forskellen i bære- og overløbsflag under binær multiplikation?


Bedste svar

I starten skal vi understrege disse punkter:

  • ALU er ligeglad med, om du laver signeret eller usigneret matematik.
  • ALU gør bare det binære matematik og indstiller flagene passende.
  • I signed numbers tegnbit er en bit, der angiver tegnet på nummeret. Og det er placeret i den mest betydningsfulde bit.

– I usigneret aritmetik, vi skal se bæreflagget for at opdage fejl.

– I underskrevet aritmetik, vi skal se overløbsflagget for at opdage fejl.

Carry Flag er indstillet, hvis:

  • tilføjelsen af ​​to tal forårsager en udførelse af de mest betydningsfulde (venstre) bits adde d.
  • 1111 + 0001 = 0000 => bæreflag er slået til.
  • subtraktion af to tal kræver et lån til det mest betydningsfulde (længst til venstre ) bits trukket.
  • 0000 - 0001 = 1111 => bæreflag er slået til.

Overflow Flag indstilles, hvis:

  • summen af ​​to tal med tegnbiten off giver et resultat nummer med tegnbiten on.
  • 0100 + 0100 = 1000 => overløbsflag er slået til.
  • summen af ​​to tal med tegnbiten on giver et resultattal med tegnbiten off.
  • 1000 + 1000 = 0000 => overløbsflag er slået til.
  • Bemærk, at : blandet tegn tilføjelse tænder aldrig overløbsflagget.

– for at gøre det mere klart, lad os se de 2 eksempler:

1- antag følgende binære tilføjelse `0111 + 0010 = 1001 `

– hvis vi laver usigneret matematik

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

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

– hvis vi laver signeret matematik

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

7 + 2 = -7 // error detected

2- antag følgende binære tilføjelse `1111 + 0001 = 0000`

– hvis vi laver usigneret matematik

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

15 + 1 = 0 // error detected

– hvis vi laver signeret 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.

endelig kan du finde mere info her: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Svar

Fra et mekanistisk synspunkt indstilles bæreflagget, når der er en udførelse af den mest betydningsfulde bit. Overløbsflaget indstilles, når der er en bære til den mest betydningsfulde bit.

Med usigneret aritmetik behøver du kun bekymre dig om bæringen flag. Hvis der udføres noget af den mest betydningsfulde bit, er resultatet for stort til at blive indeholdt i et enkelt register.

For signeret aritmetik er situationen mere kompleks. Overløb opstår, når bæreflagget og overstrømsflagget er forskellige. Her er alle alternativer til tilføjelse på to bits.

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

Bemærk, at linie 2, 5 og 6 giver forkerte resultater på grund af overløb, og at disse også er, når CF er forskellig fra OF.

Nogle processorer kan gøre denne sammenligning for dig og OF du ser kan være resultat af sammenligning af et internt indførselsflag med udførelsesflaget. Det er stadig kun gyldigt for underskrevet aritmetik.

Det fungerer også med anden aritmetik, herunder multiplikation.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *