System resztowy

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Szablon:Inne znaczenia Szablon:Systemy liczbowe System resztowy (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 [0,M), gdzie M jest iloczynem wszystkich modułów.

Niech B=(m1,m2,,mn), będzie bazą względnie pierwszych modułów, a M ich iloczynem. Wtedy reprezentacją liczby X w systemie resztowym o bazie B jest (x1,x2,,xn) gdzie xi=X mod mi dla każdego 1in.

Operacje

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, A i B, reprezentowane przez ai i bi w systemie resztowym zdefiniowanym przez bazę mi (dla i z przedziału 0in).

Dodawanie i odejmowanie

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

C=A±BmodM

może być policzone w systemie resztowym jako:

ci=ai±bimodmi.

Mnożenie

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

C=ABmodM,

liczymy:

ci=aibimodmi.

Przykład

Przyjmijmy bazę (2,3,5). Rozpatrzmy dwie liczby, X=2 i Y=23. W przyjętym systemie resztowym liczby te reprezentujemy jako X=(0,2,2), Y=(1,2,3):

M=m1m2m3=235=30,
XY=46,
XYmodM=46mod30=16.

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

(0,2,2)(1,2,3)=(01mod2,22mod3,23mod5)=(0,1,1).

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

Dzielenie

Dzielenie w systemie resztowym jest bardziej skomplikowanie.

Z drugiej strony jeśli B jest liczbą pierwszą dla M (tzn. bi0 dla wszystkich i), wtedy

C=AB1modM

może być prosto policzone przez

ci=aibi1modmi,

gdzie B1 jest liczbą odwrotną do B modulo M, i bi1 jest liczbą odwrotną z bi modulo mi (współczynniki bi1 mogą zostać wyliczone raz dla danego systemu resztowego).

Konwersja odwrotna

Konwersję odwrotną można przeprowadzić w następujący sposób. Niech (x1,x2,,xn) będzie reprezentacją liczby X w systemie resztowym o bazie (m1,m2,,mn), oraz niech

M=m1m2mn

oraz

mi~=Mmi1,

gdzie:

x=z1moda(xz)moda=1;

wtedy

X=(i=1nmi~(mi~1modmi)xi)modM.

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

M=105,m1~=35,m2~=21,m3~=15

oraz

m1~1modm1=2,m2~1modm2=1,m3~1modm3=1,

więc

X=(3522+2113+1514) mod105=263 mod105=53.

Zobacz też

Linki zewnętrzne

Szablon:Kontrola autorytatywna