Objavljeno: 6.5.2015 08:00

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

  • Starlinkovi sateliti padajo na Zemljo

    Kot v obrabljeni frazi je Starlink tudi v resnici upokojil že več satelitov, kot so jih druga podjetja sploh izstrelila. Vsak dan na Zemljo pade kakšen, kar ni malo. Že marca letos smo poročali, da je Starlink deorbitiral 865 satelitov, še dobrih tristo pa jih je bilo na seznamu. Trend se nadaljuje.

    Objavljeno: 13.10.2025 05:00
  • Telefone nam bodo prodajali še brez kablov

    ​​Sony je s svojim novim modelom pametnega telefona Xperia 10 VII dvignil precej prahu.

    Objavljeno: 9.10.2025 14:00
  • Miške so lahko tudi prisluškovalne naprave!

    Mikrofoni ne počno nič drugega kot zaznavajo potovanje zvočnih valov po mediju, ki je običajno zrak. A na enak način se zvok širi tudi po trdninah, kar ni le znanstvenofantastični način prisluškovanja. Raziskovalci s kalifornijske univerze v Irvinu so pokazali, da lahko tudi zmogljive igričarske miške delujejo kot prisluškovalna naprava.

    Objavljeno: 8.10.2025 05:00
  • Nizozemska prisilno prevzela kitajsko tovarno čipov

    Nizozemska je z izjemno kontroverzno in neobičajno potezo prevzela nadzor nad podjetjem Nexperia, ki je bilo v kitajski lasti. Ministrstvo za gospodarstvo je uporabilo zakon o dostopnosti izdelkov in ocenilo, da je vodenje podjetja resno zgrešeno, to pa ima posledice za dostopnost čipov, ki so ključna dobrina za državo in Evropo.

    Objavljeno: 14.10.2025 07:00
  • Windows 11 ne bo možno namestiti brez interneta in spletnega profila

    Ni skrivnost, da Microsoft resnično motijo namestitve in uporaba Windows brez spletnih profilov. Že doslej so takšno, lokalno uporabo oteževali, sedaj pa so naredili še korak naprej. V novi testni verziji Windows 11 so onemogočili vse znane načine za izogibanje spletnemu profilu.

    Objavljeno: 8.10.2025 07:00
  • AMD bo dobavljal čipe za OpenAI, slednji bo kupil desetino AMD-ja

    AMD in Open sta sklenila strateško partnerstvo, v katerem bo imel OpenAI možnost kupiti 10 odstotkov podjetja AMD. Na borzi so AMD-jeve delnice nemudoma pridobile 25 odstotkov vrednosti, s čimer se je tržna kapitalizacija podjetja povzpela 335 milijard dolarjev.

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