Mikä on aritmeettinen ylivuoto?

Aritmeettinen ylivuoto on ehto, joka esiintyy tietokoneissa, erityisesti tietokoneohjelmoinnin alalla, kun laskutoimitus tai toiminto antaa tuloksen, joka on liian suuri tallennusjärjestelmälle tai rekisterille. Ylivuoto voi myös viitata määrään, jolla annettu tulos ylittää tallennukseen tarkoitetun muistin. Joissakin tapauksissa tietojen ylivuoto voidaan tallentaa toiseen tietojen tallennuspaikkaan; toisissa se voi aiheuttaa ohjelman kaatumisen, hitauden tai epätarkkoja tuloksia. Aritmeettinen ylivuoto ei rajoitu pelkästään henkilökohtaisiin tai yritystietokoneisiin, koska yksinkertaisilla kannettavilla laskimilla ja viestintälaitteilla on myös rajoituksia käsiteltävien arvojen suuruudelle.

Ohjelmoijilla on taipumus oppia menetelmiä aritmeettisten ylivuotovirheiden käsittelemiseksi jo opintojensa alussa, koska ne ovat yleensä hyvin yleisiä ohjelmointivirheitä. Aritmeettisen ylivuoton jakamiseen on monia erilaisia ​​menetelmiä. Ohjelman suunnittelulla on erittäin tärkeä osa; hyvin suunniteltu ohjelma, joka käyttää johdonmukaisia ​​ja oikeita tietotyyppejä ja pituuksia, ei saisi kokea tällaisia ​​virheitä. Jos suurta huolellisuutta tarkastetaan toimintojen järjestyksessä ja pidetään kaikki johdonmukaisina, ylivuotovirheet voidaan välttää kokonaan.

Toinen tapa käsitellä aritmeettisia ylivuotovirheitä on jakaa toiminnot pienempiin vaiheisiin. Järjestelmän on usein helpompi käsitellä yksinkertaisia, pieniä toimintoja kuin monimutkaisia ​​toimintoja, joihin liittyy suuri määrä ja liiallisia laskelmia. Jos palautetun numeron olevan erittäin tarkka, ei ole äärimmäisen tärkeää, joskus riittää, että kirjoitat ohjelman siten, että se ilmoittaa käyttäjälle ylivuotovirheestä, mutta palauttaa arvon joka tapauksessa. Yleisin tapa käsitellä aritmeettinen ylivuotovirhe on jättää se kokonaan huomiotta. Vaikka tämä on yleensä vaaratonta, se voi antaa vääriä tuloksia ja vaarantaa ohjelman hyödyllisyyden ja tehokkuuden.

Ariane 5 lento 501 havainnollistaa selvästi aritmeettisten ylivuotovirheiden vaaroja. Lento oli eurooppalaisen Ariane 5 -käyttökelpoisen laukaisujärjestelmän ensimmäinen koeajo, joka käytti suuren osan vanhan Ariane 4 -järjestelmän koodista uudelleen. Ariane 5: n kiihtyvyys oli kuitenkin huomattavasti suurempi kuin Ariane 4: n, eikä ohjelmointi ollut riittävä käsittelemään tarvittavia suurempia arvoja. Raketti lähti suunnitellulta lentoradaltaan 37 sekuntia laukaisun jälkeen ja se oli tuhottava. Tämä yksinkertainen ohjelmointivirhe maksoi satoja miljoonia Yhdysvaltain dollareita.