Mitä eroa on kanto- ja ylivuotolipulla binäärisen kertolaskun aikana?


Paras vastaus

Aluksi meidän on korostettava näitä kohtia:

  • ALU ei välitä, harjoitteletko allekirjoitettua vai allekirjoittamatonta matematiikkaa.
  • ALU tekee vain binäärisen matematiikka ja asettaa liput asianmukaisesti.
  • Sisään signed numbers merkkibitti on bitti, joka osoittaa luvun merkin. Ja se sijaitsee merkittävimmässä bitissä.

allekirjoittamaton aritmeettinen, meidän on tarkkailtava kantolippua virheiden havaitsemiseksi.

allekirjoitettu aritmeettinen, meidän on tarkkailtava ylivuotolippua virheiden havaitsemiseksi.

Kantolippu on asetettu, jos:

  • Kahden numeron lisääminen aiheuttaa merkittävimmän (vasemmanpuoleisimman) bitin adden suorittamisen d.
  • 1111 + 0001 = 0000 => kantolippu on käytössä.
  • kahden numeron vähennys edellyttää lainaa merkittävimpään (vasemmanpuoleisin) ) bittiä vähennetty.
  • 0000 - 0001 = 1111 => kantolippu on käytössä.

Ylivuotolippu asetetaan, jos:

  • kahden merkkibitillä off olevan numeron summa tuottaa tuloksen numero, jolla on merkkibitti on.
  • 0100 + 0100 = 1000 => ylivuotolippu on käytössä.
  • kahden merkkibitillä on olevan luvun summa tuottaa tulosnumeron merkkibitillä off.
  • 1000 + 1000 = 0000 => ylivuotolippu on käytössä.
  • Huomaa : Sekamerkki lisäys ei koskaan kytke päälle ylivuotolippua.

– jotta se olisi selkeämpi, katsotaan nämä kaksi esimerkkiä:

1 – oletetaan seuraava binaarinen lisäys `0111 + 0010 = 1001 `

– jos teemme allekirjoittamatonta matematiikkaa

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

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

– jos teemme allekirjoitettua matematiikkaa

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

7 + 2 = -7 // error detected

2- oletetaan seuraava binaarinen lisäys `1111 + 0001 = 0000`

– jos teemme allekirjoittamatonta matematiikkaa

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

15 + 1 = 0 // error detected

– jos teemme allekirjoitettua matematiikkaa

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.

lopuksi löydät lisätietoja täältä: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Vastaus

Mekanistisesta näkökulmasta kantolippu asetetaan, kun merkittävimmän bitin suoritus on suoritettu. Ylivuotolippu asetetaan, kun siirto tärkeimpään bittiin on .

Allekirjoittamattomalla laskutoimituksella sinun on huolehdittava vain siirtämisestä lippu. Jos jotain suoritetaan merkittävimmistä biteistä, tulos on liian suuri sisällytettäväksi yhteen rekisteriin.

Allekirjoitetussa laskutoimituksessa tilanne on monimutkaisempi. Ylivuoto tapahtuu, kun kantolippu ja ylivuotolippu ovat erilaiset. Tässä ovat kaikki vaihtoehdot kahden bitin lisäämiseen.

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

Huomaa, että rivit 2, 5 ja 6 tuottavat virheellisiä tuloksia ylivuodon takia ja että nämä ovat myös silloin, kun CF on erilainen kuin OF.

Jotkut prosessorit saattavat tehdä tämän vertailun sinulle ja näkeväsi OF voi olla tuloksen verrattaessa sisäistä siirtolippua harjoituslippuun. Se on edelleen voimassa vain allekirjoitetussa laskutoimituksessa.

Se toimii myös muun laskutoimituksen kanssa, mukaan lukien kertolasku.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *