Kas yra 2038 problema?
2000 metai problema suprantama daugumai žmonių šių dienų, nes iš didelio kiekio žiniasklaidos dėmesio ji gavo .
Daugelis programų, parašytų į C programavimo kalba yra gana apsaugota nuo Y2K problema, bet kenčia, o ne nuo metų 2038 problema. Ši problema kyla todėl, kad dauguma C programos naudoja kasdienybe vadinamas standartinis laikas biblioteka biblioteką. Ši biblioteka nustato standartinį 4-baitų formato laiko vertės saugojimo, taip pat yra keletas funkcijų, konvertuoti, rodyti ir apskaičiuojant laiko vertės numerį.
standartas 4-baitų formato daroma prielaida, kad laiko pradžia yra sausio 1, 1970, 12:00:00 am bent Ši vertė yra 0. Bet laikas /data vertė yra išreiškiama sekundėmis po nuline verte. Taigi vertė 919642718 yra 919,642,718 sekundžių praeities 12:00:00 am nuo sausio 1, 1970, kuri yra sekmadienis vasaris 21, 1999, 16:18:38 ne Ramiojo vandenyno laikas (JAV). Tai patogus formatas, nes jei atimti jokių dvi reikšmes, ką jūs gaunate yra sekundžių skaičius, yra laiko skirtumas tarp jų. Tada galite naudoti kitas funkcijas bibliotekoje nustatyti, kiek minučių /valandų /dienų /mėnesių /metų praėjo tarp dviejų kartų.
Jei perskaitėte Kaip bitų ir baitų Darbas, žinote, kad pasirašė 4-baitų sveikasis turi didžiausią vertę 2,147,483,647, ir tai yra, kai metų 2038 problema ateina iš. Didžiausia reikšmė laiko, kol ji apsiverčia, kad neigiama (ir negaliojantis) vertė yra 2147483647, kuris verčia į sausio 19 2038. šią dieną, bet C programos, kurios naudoja standartinę laiko biblioteką pradės turėti problemų su data skaičiavimus.
Ši problema yra šiek tiek lengviau nustatyti nei Y2K problema centriniuose kompiuteriuose, laimei. Gerai parašytas programas gali būti tiesiog perkompiliavote su naujos redakcijos bibliotekoje, kuri naudoja, pavyzdžiui, 8-baitų vertes saugojimo formatu. Tai įmanoma, nes biblioteka apimantis visą laiką veiklą su savo laisvu laiku tipus ir funkcijas (skirtingai nei dauguma Didžiųjų programas, kurios nebuvo standartizuoti savo datos formatus ar apskaičiuoti). Taigi Metų 2038 problema neturėtų būti beveik taip sunku nustatyti, nes Y2K problema buvo
Štai keletas įdomių nuorodos:.