Kod graya

Justynaa
Użytkownik
Użytkownik
Posty: 42
Rejestracja: 29 paź 2009, o 21:19
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 10 razy
Pomógł: 3 razy

Kod graya

Post autor: Justynaa »

Nie wiem gdzie to napisać, ale tu powinniście wiedzieć. Potrzebuje się dowiedzieć jak się koduje kodem graya, mam taką tabelkę gdzie mam liczby od 1-15 potem w kodzie 8421 i to jest jasne a potem gray i tego już nie czaje weszłam sobie na wiki i jeszcze taką stronkę i dalej nie wiem, może mi to ktoś jak dla łośka wytłumaczyć?
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Kod graya

Post autor: Mariusz M »

Z tego co pamiętam to zapisujesz liczbę w naturalnym kodzie binarnym i xorujesz od lewej do
prawej sąsiadujące bity
(miałem to na urządzeniach techniki komputerowej jakieś osiem lat temu)
Justynaa
Użytkownik
Użytkownik
Posty: 42
Rejestracja: 29 paź 2009, o 21:19
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 10 razy
Pomógł: 3 razy

Kod graya

Post autor: Justynaa »

hmm, ale to jest myśl tylko też nie wiem jak np
mam liczbę 5 w binarnym a potem chce w graya no to
5 0101 i teraz po kolei xoruje to jak? 01 to 1, potem 10 to 1, potem 01 to 1 a na końcu co ?
abc666

Kod graya

Post autor: abc666 »

\(\displaystyle{ 0101 \ XOR \ 0010 =0111}\)
xor'ujesz z liczbą podzieloną przez 2
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Kod graya

Post autor: Mariusz M »

abc666, na urządzeniach techniki komputerowej
zapisywaliśmy liczbę w NKB z określoną liczbą bitów, pierwszy bit przepisywaliśmy
a na kolejnych wykonywaliśmy operację xor
abc666

Kod graya

Post autor: abc666 »

Hmm chyba o czymś innym mówisz.
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Kod graya

Post autor: Mariusz M »

Nie ja piszę o kodzie Graya tylko ja na lekcji z urządzeń techniki komputerowej korzystałem z takiego wzorku

\(\displaystyle{ \begin{cases} g_{n}=b_{n} \\ g_{i}=b_{i} \oplus b_{i+1} \end{cases}}\)

Najstarszy bit przepisujemy a na reszczie bitów wykonujemy operację xor
w wyżej wymieniony sposób

(Numeracja bitów jest zgodna z wykładnikami potęg dwójki przy zamianie NKB na dziesiętny)
abc666

Kod graya

Post autor: abc666 »

No to jest przecież to samo.
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Kod graya

Post autor: Mariusz M »

No z drugiej strony masz rację ale za to nie wymaga zapamiętywania następnej liczby
wykonywania przesunięcia bitowego itp i dlatego prościej i szybciej jest skorzystać z tego wzoru co podałem
abc666

Kod graya

Post autor: abc666 »

No pewnie, tylko trzeba robić pętlę przechodzącą po bitach
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Kod graya

Post autor: Mariusz M »

abc666, tym sposobem co ty podałeś też musisz
robić pętle po bitach no chyba że chcesz mieć wynik w postaci dziesiętnej

Oto fragment kodu w Pascalu i C/C++
który ty wziąłeś najprawdopodobniej z Wikipedii
która według mnie nie jest wiarygodnym źródłem

Kod: Zaznacz cały

a,b:word;
readln(a);
b:=a xor (a shr 1);
writeln(b);

Kod: Zaznacz cały

unsigned a,b;
scanf("%u",&a);
b=a ^(a >> 1);
printf("%u=
",b);
Tylko że teraz dostajesz wynik w postaci dziesiętnej

(Dla złożoności obliczeń jedna pętla w tą czy w tą zwykle nie robi różnicy
tym bardziej jeśli pętla nie jest zagnieżdżona)

W poprzedniej wiadomości nie miałem na myśli implementacji w jakimś
konkretnym języku programowania tylko że korzystając z tego wzoru który podałem
łatwiej przedstawić liczbę w kodzie Graya licząc na papierze
Na urządzeniach techniki komputerowej nie pisaliśmy z klasą programów tylko takie
rzeczy przeliczaliśmy na papierze
(rysowaliśmy tabelki na których ten wzór był od razu widoczny itd)
Ostatnio zmieniony 20 paź 2010, o 22:43 przez Mariusz M, łącznie zmieniany 1 raz.
abc666

Kod graya

Post autor: abc666 »

Oto fragment kodu w Pascalu i C/C++
który ty wziąłeś najprawdopodobniej z Wikipedii
Gdzie ja podałem jakiś kod?
chyba że chcesz mieć wynik w postaci dziesiętnej
Yyy? Jaki związek z obliczeniami ma sposób wyświetlania wyniku?

Btw. nie wiem po co druga zmienna.

Kod: Zaznacz cały

a^=(a/2);
ODPOWIEDZ