Sunday, June 12, 2011

HW: Polyadicke ciselne sustavy a prevody medzi nimi

Ciselne sustavy delime na

  • polyadicke
    Tu patria sustavy, ktore pouzivame bezne, ako 2-kova, 10-kova a 16-kova sustava. Ale aj sustava pre vyjadrenie casu. Maju spolocne to, ze su pozicne. 
  • nepolyadicke
    Tieto sustavy nie su pozicne a patri sem napriklad sustava rimskych cisel. 
Dalej sa budeme venovat polyadickym sustavam, ktore sa pouzivaju v pocitacoch. Polyadicke sustavy su urcene bazou z, kde z je z N a >= 2. Sustava s bazou z sa nazyva z-adicka sustava, pre z = 2 mame dvojkovu (binarnu) sustavu, z = 10 desiatkovu (dekadicu) sustavu, z = 16 sestnastkovu (hexadecimalnu) sustavu.

Tieto sustavy su pozicne preto, ze pozicia cisla udava jeho hodnotu. 

napriklad 
101.01 (2)  = 1*2^2 + 0*2^1 + 1*2^0 + 0*2^-1 + 0*2^-2
250.12 (10) = 2*10^2 + 5*10^1 + 0*10^0 + 1*10^-1 + 2*10^-2

Z vyssie uvedeneho je formalny zapis polyadickej sustavy uz jasny 

ai je z-adicka cifra na pozicii i
i je rad cislice, alebo pozicia 
n je najvyssi rad s nenulovou cislicou 
m je najnizsi rad s nenulovou cislicou 
an ... a0 tvori celu cast 
a-1 ... a-m tvori zlomkovu cast 
cela a zlomkova cast je oddelena desatinnou (radovou) ciarkou

Hodnotu Az ziskame tak, ze spocitame vsetky suciny ai*z^i, alebo ak chcete, tak slovne cislica * (baza ^ pozicia)



Prevod do a z polyadickej sustavy

Prevod z jednej sustavy do druhej znamena, ze musime najst A2 k A1 tak, ze maju rovnaku hodnotu. Prevod mozme spachat
  • priamo 
    operaciami v 1. alebo 2. sustave 
  • nepriamo
    posutpnym prevodom, napriklad cez inu sustavu, z1 -> 10 -> z2 
Cela a zlomkova cast sa prevadzaju zvlast

Cislo z 10-kovej do binarnej prevedieme postupnym delenim cislom 2. Zvysok po deleni je cislicou 2-kovej sustavy. 

20 (10) -> binarne cislo 

i    A(i)   A(i)/2    A(i) mod 2        #A(i) ma z = 10
0   20      10             0                          
1   10       5              0
2    5        2              1
3    2        1              0
4    1        0              1

i (iteracia) znaci MSB a LSB, 10100 je vysledok. 

takto mozme prevadzat z 10-kovej do z-adickej. Delenie vzdy ukoncime vo chvili, ked je podielom cislo mensie, ako baza.Priklad hore je dost jasny.

Zlomkova cast je trosku ina, ale nie zas az tak velmi :). 
  1. zlomkovu cast nasobime cielovou bazou 
  2. cifru pred radovou ciarkou oznacime V-1 a budeme si ju pamatat ako aj pocet nasobeni 
  3. celu cast vysledku nasobenie oddelime a dostaneme nove cislo 
  4. opakujeme az kym neziskame dostatocnu presnost, pripadne same 0-ly (to uz by sme zbytocne nasobili ... )
 Hladany obraz je 0,V-1 ... -i, kde i pocet iteracii. Ak sa nahodou dostaneme k cislu, ktore nema ukonceny rozvoj, tak podla vyssie uvedeneho bodu 4, by sme boli pekne v kybli a upisali sa k smrti :), preto tu mame super vec, zaokruhlovanie. 

Napriklad: 0,048, z = 10 do z = 5 

5 * 0,048 = 0,240     => V-1 = 0
5 * 0,240 = 1,200     => V-2 = 1
5 * 0,200 = 1,000     => V-3 = 1
5 * 0,000 = 0,000     => V-4 = 0
--------------------------------
A = 0,0110000000005 = 0,0115

Prevod medzi pribuznymi sustavami
Dve sustavy z1 a z2 su pribuzne, ak z1 = z2^k (napriklad 16 = 4^2), k patri N. Medzi cislami v pribuznych sustavach je len formalny rozdiel. K-ticu cifier v z2 je mozne zapisat ako jednu cifru v z1, postupujeme od radovej ciarky. 

z1 = 2 a z2 = 16 => k = 4 
1001101,01011 rozdelime na 
100 | 1101, |  0101 | 1000
  4       D   , |     5    |     8

z1 = 8 a z2 = 2 => k = 3  #ale bacha na to, teraz to delenie na k mame opacne
734,051
   7     |     3     |    4,    |    0      |    5     |     1
 111   |  011    |  100,  |  000    |  101   |   001