System resztowy

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Ten artykuł dotyczy systemu liczbowego. Zobacz też: arytmetyka resztowa liczb całkowitych.

System resztowy (skr. RNS od ang. residue number system) – system liczbowy służący do reprezentacji liczb całkowitych wektorem reszt z dzielenia względem ustalonego wektora wzajemnie względnie pierwszych modułów. Chińskie twierdzenie o resztach orzeka, że taka reprezentacja jest jednoznaczna dla liczb całkowitych ze zbioru gdzie jest iloczynem wszystkich modułów.

Niech będzie bazą względnie pierwszych modułów, a ich iloczynem. Wtedy reprezentacją liczby w systemie resztowym o bazie jest gdzie dla każdego

Operacje[edytuj | edytuj kod]

Na liczbach reprezentowanych w systemie resztowym może być efektywnie przeprowadzonych wiele operacji arytmetycznych. Wykonuje się je przeprowadzając niezależnie na odpowiednich resztach ‘zwykłe’ operacje, a następnie operację modulo odpowiedniego modułu. Dla następujących operacji rozważmy dwie liczby całkowite, i reprezentowane przez i w systemie resztowym zdefiniowanym przez bazę (dla z przedziału ).

Dodawanie i odejmowanie[edytuj | edytuj kod]

Dodawanie (lub odejmowanie) może być wykonane przez proste dodawanie (lub odejmowanie) małych liczb całkowitych i policzenie odpowiedniego modułu:

\może być policzone w systemie resztowym jako:

Mnożenie[edytuj | edytuj kod]

Mnożenie można wykonać w podobny sposób do dodawania i odejmowania. Aby obliczyć:

liczymy:

Przykład[edytuj | edytuj kod]

Przyjmijmy bazę Rozpatrzmy dwie liczby, i W przyjętym systemie resztowym liczby te reprezentujemy jako

Obliczamy wartość iloczynu przy użyciu systemu resztowego:

(0, 2, 2) * (1, 2, 3) = (0*1 mod 2, 2*2 mod 3, 2*3 mod 5) = (0, 1, 1)

Liczba (0, 1, 1) po zamianie na liczbę całkowitą w reprezentacji dziesiętnej wynosi 16.

Dzielenie[edytuj | edytuj kod]

Dzielenie w systemie resztowym jest bardziej skomplikowanie.

Z drugiej strony jeśli jest liczbą pierwszą dla (tzn. dla wszystkich ) wtedy

może być prosto policzone przez

gdzie jest liczbą odwrotną do i jest liczbą odwrotną z modulo (współczynniki mogą zostać wyliczone raz dla danego systemu resztowego).

Konwersja odwrotna[edytuj | edytuj kod]

Konwersję odwrotną można przeprowadzić w następujący sposób. Niech będzie reprezentacją liczby w systemie resztowym o bazie oraz niech

oraz

gdzie:

wtedy

Np. w systemie o bazie (3, 5, 7), reprezentacją jest (2, 3, 4), wtedy

oraz

więc

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]