Kas ir aritmētiskā pārpilde?

Aritmētiskā pārpilde ir stāvoklis, kas rodas datoros, jo īpaši datorprogrammēšanas jomā, kad aprēķins vai darbība dod rezultātu, kas ir pārāk liels, lai to apstrādātu uzglabāšanas sistēma vai reģistrs. Pārpilde var attiekties arī uz summu, ja dotais rezultāts pārsniedz glabāšanai paredzēto atmiņu. Dažos gadījumos datu pārpilde var tikt saglabāta citā datu uzglabāšanas vietā; citos gadījumos tas var izraisīt programmas avāriju, lēnu darbību vai neprecīzus rezultātus. Aritmētiskā pārpilde attiecas ne tikai uz pilniem personālajiem vai biznesa datoriem, jo ​​vienkāršiem rokas kalkulatoriem un sakaru ierīcēm ir arī ierobežotas to vērtību vērtības, kuras var apstrādāt.

Programmētājiem ir tendence apgūt metodes, kā rīkoties ar aritmētiskām pārpildes kļūdām izglītības sākumā, jo tās mēdz būt ļoti izplatītas programmēšanas kļūdas. Ir daudz dažādu metožu aritmētiskās pārpildes nodošanai. Programmas dizainam ir ļoti svarīga loma; labi izstrādāta programma, kas izmanto konsekventus un pareizus datu tipus un garumus, nedrīkst piedzīvot šādas kļūdas. Ja ļoti rūpīgi pārbaudāt darbību secību un saglabājat visu konsekventu, pārpildes kļūdas var pilnībā izvairīties.

Vēl viens veids, kā risināt aritmētiskās pārpildes kļūdas, ir sadalīt darbības mazākos posmos. Sistēmai bieži vien ir vieglāk veikt vienkāršas, mazas darbības nekā sarežģītas darbības, kas saistītas ar lieliem skaitļiem un pārmērīgiem aprēķiniem. Ja nav īpaši svarīgi, lai atgrieztais skaitlis būtu pilnīgi precīzs, dažkārt pietiks ar programmas uzrakstīšanu tā, lai tā informētu lietotāju par pārpildes kļūdu, bet tik un tā atgrieztu vērtību. Visizplatītākais veids, kā rīkoties ar aritmētiskās pārpildes kļūdu, ir to pilnībā ignorēt. Lai gan tas parasti ir nekaitīgs, tas var sniegt nepareizus rezultātus un var apdraudēt programmas lietderību un efektivitāti.

Ariane 5 lidojums 501 skaidri parāda aritmētisko pārpildes kļūdu draudus. Lidojums bija pirmais Eiropas Ariane 5 izlietojamās palaišanas sistēmas testa brauciens, kurā atkārtoti tika izmantota liela daļa koda no vecās Ariane 4 sistēmas. Tomēr Ariane 5 paātrinājums bija ievērojami lielāks nekā Ariane 4, un programmēšana nebija piemērota, lai apstrādātu nepieciešamās lielākās vērtības. Tādējādi raķete atstāja paredzēto lidojuma trajektoriju 37 sekundes pēc palaišanas un bija jāiznīcina. Šī vienkāršā programmēšanas kļūda maksāja simtiem miljonu ASV dolāru.