5/1/2010
Gdzieniegdzie pojawiły się doniesienia o tym, że niektóre SMS-y otrzymane po nowym roku przychodzą z datą 2016, a nie 2010. Poniżej wyjśniamy, skąd wziął się komórkowy problem roku 2016.
Problem roku 2016
…polega na nieprawidłowym wyświetlaniu daty. Zamiast 2010, niektóre z kart kredytowych, terminali płatniczych, centralek telefonicznych, telefonów komórkowych z Windows Mobile na pokładzie i innych urządzeń elektromechanicznch pokazują datę 2016. Wina, jak zwykle, leży po stronie programistów ;) Poprawmy zatem nieprecyzyjne artykuły prasowe, prezentując wyjaśnienie magicznego błędu:
Dzięsiątkę w 2010 można zapisać w ten sposób: 0x10, co zawsze oznaczać będzie 0001 0000.
Jeśli 0001 0000 zostanie zinterpretowane przez urządzenie jako liczba binarna, otrzymamy dziesiętną wartość 16
Jeśli 0001 0000 zostanie zinterpretowane jako notacja BCD (Binary Coded Decimal), w której cyfry 0-9 są reprezentowane przez kody od 0000 do 1001, liczba 0001 0000 da wynik 10.
BCD to system kodowania, który liczby heksadecymalne i binarne prezentuje w zakodowanej postaci, ale liczby dziesiętne już w formie rozkodowanej. Innymi słowy, programista odczytał datę jako liczbę jako binarną, a nie liczbę w notacji BCD. Ot, tajemnica rozwiązana.
Cóż, było trochę o tym na przedmiocie zwanym Techniką Cyfrową, jak widać akademicka wiedza się czasem przydaje. ;]
Patrzta się, o BCD czytałem jeszcze na początku lat dziewięćdziesiątych w kursie asemblera w nieocenionym miesięczniku „Tajemnice ATARI”. Nigdy nie wiadomo, kiedy jaka wiedza się przyda. ;P
@Tomasz Kowalczyk, w technikach też o tym uczą ;-)
Ew. komuś się hexy z dec pomyliły:
0x09 hex = 09 dec
0x10 hex = 16 dec
Zamiast błąd roku 2010 powinien byc raczej “błąd niekometentnego programisty” ;]
@Marek Zając: Niestety jestem po liceum, ominęły mnie takie ciekawostki. ;]
Szkoda, że Piotr nie wymienił więcej przykładów, jest nieco więcej sprzętu i oprogramowania dotkniętego problemem roku 2010. Opisałem to po krótce u siebie: http://stilger.eu/2010/01/06/problem-roku-2010/
Pewnie nie chciał Ci zabierać materiału. ;]
bardzo możliwe:)
@Tomasz Kowalczyk: to tak dla rozjaśnienia sytuacji ;]