Mi a különbség a hordozási és a túlcsordulási zászlóban a bináris szorzás során?


Legjobb válasz

Az elején ki kell emelnünk ezeket a pontokat:

  • ALU nem érdekli, hogy aláírt vagy aláíratlan matematikát folytatsz.
  • ALU csak a bináris matematika és megfelelően beállítja a zászlókat.
  • In signed numbers a jel bit olyan bit, amely a szám előjelét jelzi. És ez található a legjelentősebb bitben.

– A aláíratlan számtan, a hibák észleléséhez figyelnünk kell a carry flagre.

– A aláírt aritmetika, figyelnünk kell a túlcsordulási jelzőt a hibák észleléséhez.

– A Carry Flag be van állítva, ha:

  • két szám összeadása a legjelentősebb (bal oldali) bit adde végrehajtását eredményezi d.
  • 1111 + 0001 = 0000 => carry flag be van kapcsolva.
  • két szám kivonásához kölcsön szükséges a legjelentősebb (bal szélső) ) biteket kivontuk.
  • 0000 - 0001 = 1111 => carry flag be van kapcsolva.

– a Túlcsordulási zászló akkor van beállítva, ha:

  • két szám összege a off előjelű bitgel eredményt ad szám előjel bit on.
  • 0100 + 0100 = 1000 => túlcsordulás jelző be van kapcsolva.
  • két szám összegével előjel bit on eredménysorozatot kap, amelynek előjelének száma off.
  • 1000 + 1000 = 0000 => a túlcsordulás jelző be van kapcsolva.
  • Vegye figyelembe, hogy : vegyes előjel Az addíció soha nem kapcsolja be a túlcsordulási jelzőt.

– hogy világosabb legyen, nézzük meg ezt a 2 példát:

1- tegyük fel a következő bináris kiegészítést: “0111 + 0010 = 1001 `

– ha aláíratlan matematikát folytatunk

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

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

– ha aláírt matematikát folytatunk

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

7 + 2 = -7 // error detected

2- tegyük fel a következő bináris kiegészítést: “1111 + 0001 = 0000”

– ha aláíratlan matematikát folytatunk

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

15 + 1 = 0 // error detected

– ha aláírt matematikát folytatunk

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.

végül itt talál további információkat: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Válasz

Mechanisztikus szempontból a carry flag akkor van beállítva, ha a legjelentősebb bit végrehajtása van. A túlcsordulás jelző akkor kerül beállításra, ha van egy hordozás a legjelentősebb bitbe.

Aláíratlan aritmetikával csak a hordozás miatt kell aggódnia. zászló. Ha valamit a legjelentősebb bitből hajtanak végre, akkor az eredmény túl nagy ahhoz, hogy egyetlen regiszterbe kerüljön.

Az aláírt számtan esetében a helyzet összetettebb. Túlcsordulás akkor következik be, ha a carry flag és a overflow flag különbözik. Itt találhatók a két bit összesítésének alternatívái.

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

Ne feledje, hogy a 2., 5. és 6. sor hibás eredményeket produkál a túlcsordulás miatt, és ezek akkor is előfordulnak, amikor a CF eltér az OF-tól.

Egyes processzorok elvégezhetik ezt az összehasonlítást az Ön számára, és az Ön által látott OF lehet az egy belső carry-flag és a carry (out) zászló összehasonlításának eredménye. Ez továbbra is csak az előírt számtanra lesz érvényes.

Más számtannal is működik, beleértve a szorzást is.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük