Integer Overflow

Jaarvak op 7 studiepunten
Forumregels
Misschien werd je vraag al vorig jaar gesteld? Gebruik dus eerst de zoekoptie!

Er zijn formularia/samenvattingen aanwezig op de volgende link: viewtopic.php?f=19&t=93
Aushim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 2628
Lid geworden op: 23 nov 2007, 23:02
Locatie: Haren
Contacteer:

Integer Overflow

Berichtdoor Aushim » 31 jan 2008, 17:43

In het theorieboek staat er op pagina 6 van hoofdstuk 4, dat bij een 16bit integer 30000 + 10000 gelijk is aan -25536. Bij het berekenen kom ik ook op dit antwoord.

Maar, in de slides en tevens op pointcarré, staat er - 7 232 als uitkomst voor 30000 + 10000.

Ik denk dat -7232 wel fout is...

Ik heb dus zo nagedacht: 40.000-2^15=7232. Dit is dus mijn overflow.

Een overflow van een eenheid resulteert op de maximale negatieve waarde die ingenomen kan worden door een 16-bit integer, nml -2^15 of -32.768. (Als voorbeeld is bij een 4 bits integer 7+1 gelijk aan -8.)

Een overflow van 7.232 resulteert dan op een negatieve uitkomst dat overeenstemt met -32.768+7.232 of -25.536
Gebruikersavatar
Tom V
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 2996
Lid geworden op: 28 nov 2007, 20:09
Contacteer:

Re: Integer Overflow

Berichtdoor Tom V » 31 jan 2008, 17:47

-25.536 is ook volgens mij het correcte antwoord.
Dit bericht kreeg een Chuck Norris quality label:

Afbeelding
roxane
Regelmatig forumgebruiker
Regelmatig forumgebruiker
Berichten: 82
Lid geworden op: 28 nov 2007, 18:34

Re: Integer Overflow

Berichtdoor roxane » 31 jan 2008, 18:15

hoe rekent ge dat dan uit??
zo raar dat wij nergens echt oefeningen op gemaakt hebben
Aushim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 2628
Lid geworden op: 23 nov 2007, 23:02
Locatie: Haren
Contacteer:

Re: Integer Overflow

Berichtdoor Aushim » 31 jan 2008, 18:26

IK onderstel dat je mijn methode niet hebt begrepen...

Wat ik gedaan heb is het volgende:

Je hebt een 16-bit integer. Hij bereikt dus de volgende waarde: van -2^15 tot 2^15-1.
Aangezien 40.000 groter is dan 2^15-1 heb je een overflow (je gaat over de toegelaten limiet). Nu, als je een overflow hebt van 1, dan krijg je de grootste negatieve waarde (dus -2^15).

Als je een overflow hebt van x, hebt je dus -2^15+x als getal.

Neem een simpel voorbeeld:
Een 4bits interger.
Hij gaat van -8 naar 7. Als je dus 5+3 berekent valt je op -8 (want boven 7 : maximaal toegelaten positief getal, hebt je -8: maximaal toegelaten negatief getal).

Je overflow is in dit geval 0 en niet 1!
Waarom? Omdat je 2^4-1 positief getal kunt hebben maar ook 0 erbij => Totaal: 2^4.

Terugkeren naar onze oorspronkelijk opgave: Het bereken van de overflow doe je dus zeer gemakkelijk. Je pakt 40.000 en trek je 2^15 ervan af. Daarna doe je -2^15+je overflow

Terug naar “Informatica”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron