Vés al contingut

Desbordament de nombres enters

De la Viquipèdia, l'enciclopèdia lliure
El desbordament de nombres enters es pot demostrar mitjançant el desbordament d'un hodòmetre, una versió mecànica del fenomen. Tots els dígits tenen un valor màxim de 9, i el següent increment del dígit blanc provoca una cascada d'addicions que estableixen tots els dígits a 0, però no hi ha cap dígit superior (per al valor de 1.000.000) per canviar a un 1, de manera que el comptador restableix a zero. Això és embolcallar en contrast amb saturar .

A la programació d'ordinadors, es produeix un desbordament de nombres enters quan una operació aritmètica sobre nombres enters intenta crear un valor numèric que es troba fora de l'intèrval que es pot representar amb un nombre determinat de dígits, ja sigui superior al màxim o inferior al valor representable mínim.

El resultat més comú d'un desbordament és que s'emmagatzemen els dígits representables menys significatius del resultat; es diu que el resultat s'embolcalla al voltant del màxim. En alguns processadors com les unitats de processament de gràfics (GPU) i els processadors de senyal digital (DSP) que admeten l'aritmètica de saturació, els resultats desbordats es fixarien, és a dir, s'establiria el valor mínim de l'interval representable si el resultat està per sota del mínim i s'establiria el valor màxim de l'interval representable si el resultat està per sobre del màxim, en lloc d'embolcallar

.


Una condició de desbordament pot donar lloc a resultats que condueixin a un comportament no desitjat. Per tant si no s'ha previst aquesta possibilitat, el desbordament pot comprometre la fiabilitat i la seguretat d'un programa.

Per a algunes aplicacions, com ara temporitzadors i rellotges, pot ser desitjable embolicar el desbordament. L' estàndard C11 estableix que per als enters sense signe, l'embolcall de mòdul és el comportament definit i, per tant, el terme desbordament mai s'aplica: "un càlcul que involucri operands sense signe mai no pot desbordar-se".[1]