Objavljeno: 6.5.2015 08:00 | Avtor: Uredništvo Monitorja

Prekoračitve obsega v zgodovini

Ta teden je v javnosti zaokrožila novica, da imajo nova Boeingova letala 787 Dreamliner hrošča, ki bi lahko v izjemno redkem spletu okoliščin povzročil izgubo električne energije. Razlog je prekoračitev obsega števil, ki jih lahko shranimo v predznačeno 32-bitno celoštevilsko spremenljivko. Problem ni nov niti redek, razkriva BBC-jev pregled.

Če prvo mesto rezerviramo za predznak, lahko v tovrstno spremenljivko shranimo največ 2.147.483.647, kar je ravno 231-1. Prištejemo ena, pa se ponovno znajdemo na začetku, saj števec preteče obseg; podobno, kot bi avtomobilski pokazal 000000, če bi prevozili milijon kilometrov.

Dandanes zaradi nepazljivosti, včasih pa so se tovrstne pomanjkljivosti v kodo prikradle, ker nihče ni realistično mogel pričakovati, da bodo tako velika števila potrebna. Posledice so včasih zabavne, drugič pa katastrofalne.

Raketa Ariane 5, ki jo je Evropska vesoljska agencija (ESA) prvikrat poizkusno izstrelila 4. junija 1996, se je po 37 sekundah uničila. Razlog je bil recikliran kos programske kode iz Ariane 4, ki je zmogel shranjevati največ 16-bitna cela števila. Pri pretvarjanju 64-bitnih števil s plavajočo vejico v 16-bitno predznačeno celo število je prišlo do prekoračitve obsega. Vrsta nesrečnih odločitev pri dizajnu je povzročila, da je ta dogodek sprožil kaskado napak, ki je vodila do uničenja rakete.

Precej manj katastrofalen je števec ogledov na YouTubu, ki je bil svoj čas prav tako omejen na 32 bitov. Da to ne zadostuje, je pokazal korejski glasbenik Psy, čigar hit Gagnam Style je dobil več kot 2.147.483.647 ogledov. YouTube je napako hitro popravil, stranski učinek pa je bila še večja reklama tako za Psyja kakor YouTube.

Zloglasni hrošč Y2K, ki v resnici sploh ni povzročil tako hudih težav, kot so bili napovedovali, je podoben, a ne povsem enake provenience. Enako težavo pa bo povzročil problem leta 2038, ko bo Unixov čas – ki od 1. januarja 1970 ob 00:00:00 UTC enakomerno teče – presegel vrednost 2.147.483.647 sekund. To se bo zgodilo 19. januarja 2038 ob 03:14:07 UTC. Medtem ko 64-bitni sistemi že uporabljajo predznačeno 64-bitno celoštevilsko spremenljivko za time_t, je v 32-bitnih sistemih rešitev teže najti, če ne želimo žrtvovati združljivosti z obstoječimi sistemi.

Najbolj katastrofalna napaka pa je bila napačna pot vojaške rakete Patriot 25. februarja 1991 v zalivski vojni, ki je nastala kot posledica malomarne obravnave števil. Raketa ni zadela iraške rakete Scud, ki je zato padla na ameriško vojašnico in terjala 28 žrtev ter poškodovala več kot 100 ljudi. Tu ni šlo za prekoračitev obsega, ampak nepravilno zaokroževanje. Števila, shranjena s plavajočo vejico v dvojiškem sistemu, imajo omejeno natančnost, zato je treba paziti, da ne kopičimo numeričnih napak pri računih. 

Vrednosti 0,01 ne moremo natančno zapisati v dvojiškem sistemu, ker ima periodo. Nekje je torej treba odrezati, kar pri naivni uporabi aritmetike števil s plavajočo vejico prinaša numerične napake. Zato v programiranju 0,3 + 0,6 ni enako 0,9, temveč 0,89999999999999991 (odvisno seveda od števila bitov). Kje je to pomembno v vsakdanjem življenju? Na blagajnah, pri transakcijskih računih itd. Tam programska oprema vrednosti ne sme zapisovati v spremenljivkah s plavajočo vejico, temveč kot cela števila, ki predstavljajo večkratnike centov (ali desetink, stotink ... centov).

Več novic

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

Najbolj brano

  • Polom Trumpove umetne inteligence v zdravstvu

    Avtomatizirano varčevanje na račun pacientov.

    Objavljeno: 28.9.2026 10:00
  • Bolnišnica si je pobrisala desetletje izvidov

    V kliničnem centru v britanskem Nottinghamu so zaradi napake službe za informatiko izgubili več kot desetletje izvidov v porodniškem oddelku. Incident se je zgodil 18. avgusta letos in je posledica človeške napake. Odkrili so jo že nekaj minut po dogodku in do danes obnovili vsebino, ne pa tudi podatkov o dostopih. Napaka ne bo vplivala na oskrbo, zatrjujejo odgovorni.

    Objavljeno: 23.9.2026 07:00
  • Pozabljeni PIN ne bo več težava

    Dobrodošla sprememba v Googlovem operacijskem sistemu Android.

    Objavljeno: 23.9.2026 08:00
  • ChatGPT bo stal do 500 dolarjev na mesec

    Na dnevu za razvijalce je OpenAI predstavil nov naročniški paket na ChatGPT, ki bo konkretno dražji od trenutnega najdražjega. Novi paket Pro 500 bo stal prav toliko dolarjev mesečno, kar je 2,5-krat več kot Pro.

    Objavljeno: 1.10.2026 07:00
  • Uvodnik: RAMagedon

    Umetna inteligenca nam obljublja cenejše delo, njen račun za strojno opremo pa vse bolj plačujemo tudi tisti, ki bi radi samo nadgradili domači računalnik.

    Objavljeno: 29.9.2026 | Avtor: Matjaž Klančar | Monitor Oktober 2026
  • Novi Samsungovi tablici

    Galaxy Tab S12 prinaša svetlejše zaslone, sedem let podpore in ekskluzivni Photoshop.

    Objavljeno: 1.10.2026 13:00
 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji