Potrudiću se da pojasnim malo,
Ulazni niz jeste 5 x 8 bita ali se od svaka 8 bita koriste samo 4 manje težine dok su ostala 4 bita veće težine nule.
Kada se takva osmobitna vrednost posmatra kao decimalni broj on može da ima vrednosti od 0 do 15.
LookUp naredba je najbrži način da se od koda dobije kodirana vrednost. Ona radi tako što vrednost prvog argumenta koristi kao indeks u nizu navedenom kao drugi argument i vraća indeksiranu vrednost. Ako je indeks veći nego što ima elemenata u nizu "za gledanje" onda neće biti upisana nova nijedna vrednost u promenjivu koja prihvata rezultat naredbe.
Da bi mogla da se upotrebi treba prvo naći niz koji radi dekodiranje.
Kao polaznu poziciju imamo niz sortiran po kodiranoj vrednosti.
0101 bin = 5 dec. je kod za vrednost 0
0001 bin = 1 dec. je kod za vrednost 1
0011 bin = 3 dec. je kod za vrednost 2
0010 bin = 2 dec. je kod za vrednost 3
0110 bin = 6 dec. je kod za vrednost 4
1110 bin = 14 dec. je kod za vrednost 5
1010 bin = 10 dec. je kod za vrednost 6
1011 bin = 11 dec. je kod za vrednost 7
1001 bin = 9 dec. je kod za vrednost 8
1101 bin = 13 dec. je kod za vrednost 9
Ako se sada isti niz sortira po kodu dobija se:
0001 bin = 1 dec. je kod za vrednost 1
0010 bin = 2 dec. je kod za vrednost 3
0011 bin = 3 dec. je kod za vrednost 2
0101 bin = 5 dec. je kod za vrednost 0
0110 bin = 6 dec. je kod za vrednost 4
1001 bin = 9 dec. je kod za vrednost 8
1010 bin = 10 dec. je kod za vrednost 6
1011 bin = 11 dec. je kod za vrednost 7
1101 bin = 13 dec. je kod za vrednost 9
1110 bin = 14 dec. je kod za vrednost 5
Zatim dopunom ovog niza sa svim vrednostima od 0 do 15 dobijamo
0000 bin = 0 dec. nije kod ni za jednu vrednost
0001 bin = 1 dec. je kod za vrednost 1
0010 bin = 2 dec. je kod za vrednost 3
0011 bin = 3 dec. je kod za vrednost 2
0100 bin = 4 dec. nije kod ni za jednu vrednost
0101 bin = 5 dec. je kod za vrednost 0
0110 bin = 6 dec. je kod za vrednost 4
0111 bin = 7 dec. nije kod ni za jednu vrednost
1000 bin = 8 dec. nije kod ni za jednu vrednost
1001 bin = 9 dec. je kod za vrednost 8
1010 bin = 10 dec. je kod za vrednost 6
1011 bin = 11 dec. je kod za vrednost 7
1100 bin = 12 dec. nije kod ni za jednu vrednost
1101 bin = 13 dec. je kod za vrednost 9
1110 bin = 14 dec. je kod za vrednost 5
1111 bin = 15 dec. nije kod ni za jednu vrednost
Sada treba samo da izaberemo koja vrednost će da označava pogrešnu ulaznu kombinaciju.
Neka to u ovom slučaju bude -1. Tada imamo niz
[-1, 1, 3, 2, -1, 0, 4, -1, -1, 8, 6, 7, -1, 9, 5, -1]
i sada možemo da napišemo programsku liniju u proton basicu:
Code:
vrednost = LookUp kod, [-1, 1, 3, 2, -1, 0, 4, -1, -1, 8, 6, 7, -1, 9, 5, -1]
koja recimo za kod 00001011 (decimalno jedanaest) iz navedenog niza vraća vrednost sa indeksom jedanaest i to je 7.
Nakon ove programske linije greška može da se proveri
Code:
If x < 0 Then
ErrorF = 1 ' imamo detektovanu grešku, dalja konverzija nema smisla i rezultat ne treba uzimati u obzir
i = 0 ' ubrzavamo brojač For petlje na poslednju vrednost kako bi smo uštedeli nepotrebne prolaze kroz petlju pri grešci
Endif
Glavna For petlja polazi od vrednosti 4 kako bi izskenirala kodove sa desna na levo (od cifre najveće težine ka cifri najmanje težine) jer dekodiranje neke cifre zavisi od ishoda dekodiranja cifre veće težine.
Citat:
Pre LookUP funkcije, dodao bih konverziju za svaku cifru iz Petherick-a u DEC
I da naglasim, LookUP funkcija zapravo pretvara iz Petherick u decimalnu vrednost.
Citat:
Kako da naredim promenljivima X1,X2,X3,X4,X5 da budu deo niza Encoder[5] ?
U programskom jeziku C moguće je ovo izvesti uz pomoć unije struktura. Na žalost, basic ne poznaje ništa slično.