TI/Cyfrowy świat

Z Brain-wiki

TI/ Analogowy a cyfrowy: sumy kontrolne

Rewolucja cyfrowa rozpoczęła się w drugiej połowie ubiegłego wieku. Dzisiaj zapisywanie i przetwarzanie wszelkiego rodzaju informacji — tekstów, obrazów, wideo i ogólnie danych — w postaci liczb jest dla nas oczywiste, ale nie zawsze tak było. Przejście z tradycyjnego zapisu analogowego na cyfrowy nie jest proste ani oczywiste, ale oferuje zasadniczą korzyść: możliwość wykrywania błędów. Pozwala to na ich korekcję, a w konsekwencji całkowicie bezbłędne przesyłanie i powielanie informacji.

Aby dokładniej zrozumieć ten podstawowy fakt, porównajmy analogowy zapis dźwięku na płycie winylowej z zapisem cyfrowym — na przykład na płycie CD.

CD zapewnia lepszą jakość — to wydaje się oczywiste. Ale, jeśli porównywać CD np. z nową płytą z dobrej tłoczni, odtwarzaną na wysokiej klasy gramofonie, może to już tak oczywiste nie być. No właśnie, nową... Zastanówmy się: płyty CD nie trzeszczą, nawet stare! Czasami nie dadzą się w ogóle odtwarzać, czasami 'gubią' fragmenty na mocno porysowanych płytkach, ale nie trzeszczą! Jak to się dzieje? Kluczem do tajemnicy jest korekcja błędów.

Aby zrozumieć, dlaczego korekcja błędów związana jest ściśle z zapisem cyfrowym, a praktycznie niemożliwa w zapisie analogowym, przyjrzyjmy się bliżej analogowym i cyfrowym zapisom dźwięku.

schemat odtwarzania dźwięku z płyty gramofonowej

Na płycie winylowej (analogowej) dźwięk kodowany jest w ciągłych zmianach głębokości rowka, po którym przemieszcza się igła gramofonu. W przybliżeniu możemy wyobrazić sobie, że 'podskok' igły w większym wgłębieniu rowka powoduje większe wychylenie membrany głośnika (po zamianie w impuls elektryczny i przejściu przez wzmacniacz). Wyżłobienie rowka nowej płyty odwzorowuje więc dokładnie zapisany dźwięk. Zarysowanie lub zabrudzenie wprowadzi przy odtwarzaniu zakłócenia (zwykle trzaski). Jednoznaczne rozróżnienie, które z wyżłobień rowka winylowej płyty odzwierciedlają oryginalny zapis muzyki, a które powstały skutkiem uszkodzeń, jest właściwie niemożliwe, dlatego też muzyka ze starych płyt kojarzy nam się z obecnością trzasków i szumu.

Od góry: ciągły (analogowy) zapis fali dźwiękowej, poniżej próbkowanie, czyli wybór chwil, w których ją mierzymy, dalej zamiana zmierzonych wartości na liczby i liczb na bity. Pasek na dole rysunku może symbolizować na przykład fragment ścieżki na płycie CD: białe pola (zera) odbijają światło lasera, a czarne (jedynki) nie.

W przypadku zapisu cyfrowego możemy w stosunkowo prosty sposób wykryć wystąpienie zakłóceń, jeśli do zapisu dodamy dodatkową informację. Na płycie CD muzykę zapisujemy jako szereg liczb, oznaczających w uproszczeniu wychylenie membrany głośnika, mierzone w ustalonych odstępach czasu — konkretnie 44100 razy na sekundę. Umówmy się dla przykładu(!), że z każdych dziesięciu kolejnych liczb do zapisu muzyki będziemy wykorzystywać tylko dziewięć, a ostatnią wykorzystamy do zapisania ich sumy. Taki sposób zapisu wprowadza redundancję, czyli nadmiar informacji w zapisie, ponieważ przy prawidłowym odczycie wystarczyłoby znać dziewięć kolejnych liczb, aby szybko obliczyć dziesiątą (ich sumę) — której tak naprawdę przy odtwarzaniu w ogóle nie wykorzystujemy. Jednak jeśli wczytywać będziemy z takiego zapisu wszystkie liczby razem z sumami, po czym niezależnie obliczymy sumę pierwszych dziewięciu licz, i w którejś dziesiątce ostatnia liczba będzie różna od sumy poprzedzających dziewięciu, to mamy pewność, że w tym miejscu wystąpił błąd.

Ta dziesiąta liczba to suma kontrolna; sumy kontrolne (w trochę bardziej wyrafinowanej postaci) stosowane są na przykład w numerach kart kredytowych, numerach kont bankowych, numerach PESEL — pozwala to łatwo i szybko wykryć błąd przy ich wpisywaniu czy przesyłaniu. Informacja o wystąpieniu błędu jest bardzo cenna, również przy odtwarzaniu muzyki:

  • Jeśli jesteśmy pewni, że nagły skok natężenia w kilku kolejnych próbkach jest wynikiem błędu zapisu, a nie efektem zamierzonym przez muzyka, to możemy ten skok 'przemilczeć', czyli np. zastąpić 'popsute' próbki średnią wartością poprzednich.
  • Po drugie, możemy zwiększyć redundancję jeszcze bardziej i zapisać np. dwie jednakowe kopie. Jeśli uszkodzeniu ulegnie fragment pierwszej kopii, program odtwarzający muzykę może automatycznie sięgnąć do odpowiedniego fragmentu drugiej kopii.

Sumy kontrolne można stosować do sprawdzania poprawności przesyłu informacji w sposób bezpośredni. Na przykład, jeśli ktoś podyktował przez telefon numer PESEL i nie jesteśmy pewni, czy dobrze zapisaliśmy wszystkie liczby, możemy z pierwszych 10 cyfr obliczyć cyfrę kontrolną według ustalonego algorytmu (który znajdziemy na stronie [https://www.gov.pl/web/gov/czym-jest-numer-pesel]) i porównać z ostatnią (jedenastą) z zapisanych cyfr. Jednak w przypadku np. płyty CD na każdą sekundę muzyki przypada ponad 40 tysięcy liczb, dlatego w praktyce sumy kontrolne obliczają komputery.

Opisana powyżej możliwość wykrywania i korekcji błędów zmieniła świat:

  • w dużej mierze przestało istnieć pojęcie kopii i oryginału: dzięki sumom kontrolnym możemy mieć pewność, że (jeśli program kopiujący nie zgłosił błędów) kopia jest dokładnie jednakowa z oryginałem: te same bity mogą być utrwalone na innym nośniku, ale ich znaczenie — obraz, dźwięk, wideo czy tekst — są dokładnie takie same, jak w oryginale
  • transmisja i przechowywanie informacji mogą opierać się na nieporównanie tańszych realizacjach niż w przypadku analogowym: nawet jeśli dane operacji bankowej, obciążającej kartę kredytową, przesyłamy zaszumioną linią telefoniczną, błędy w transmisji nie spowodują na przykład obciążenia cudzego konta. Po wykryciu błędu transmisja będzie powtarzana tak długo, aż zgodzą się sumy kontrolne, lub dopóki nie zrezygnujemy (my lub algorytm).

Żeby z tych dobrodziejstw korzystać, trzeba było najpierw opracować efektywny sposób zapisywania liczb. Zapoznamy się z nim w następnym rozdziale.