-
21. Data: 2010-11-05 10:07:12
Temat: Re: kodowanie
Od: "identifikator: 20040501" <N...@g...pl>
>>> indeks_cyfry = 0;
>>> while (liczba != 0) {
>>> cyfry[indeks_cyfry++] = liczba % podstawa_systemu;
>>> liczba = liczba / podstawa_systemu;
>>> }
uderz w stół - już jakiś doktorkowy kretyn zadał zadanie abiturientom
związane z tym algorytmem - widzę po aukcjach na zleceniach...
czy ten algorytm sygnowany jest jakimś nazwiskiem odkrywcy?
bardzo ciekawi mnie jak można matematycznie wyprowadzić ten algorytm?
może Ktoś zna jakąś stronkę?
-
22. Data: 2010-11-05 12:52:22
Temat: Re: kodowanie
Od: qwak <q...@w...pl>
W dniu 05.11.2010 11:07, identifikator: 20040501 pisze:
>>>> indeks_cyfry = 0;
>>>> while (liczba != 0) {
>>>> cyfry[indeks_cyfry++] = liczba % podstawa_systemu;
>>>> liczba = liczba / podstawa_systemu;
>>>> }
>
> uderz w stół - już jakiś doktorkowy kretyn zadał zadanie abiturientom
> związane z tym algorytmem - widzę po aukcjach na zleceniach...
Nie bardzo rozumiem dlaczego "doktorkowy kretyn"? Sam czasami prowadzę
zajęcia ze studentami i uważam to zadanie za całkiem sensowne (z
dydaktycznego pkt. widzenia... składnia do przemyśleń o systemach
liczbowych, itp.).
Oczywiście postępowanie osób które idą na studia po to aby jakoś tylko
wszystko pozaliczać (najlepiej w ogóle nic nie robiąc - oprócz szukania
"pomocy" i gotowców), jest już w mojej opinii znacznie mniej sensowne.
> czy ten algorytm sygnowany jest jakimś nazwiskiem odkrywcy?
nie wiem, możliwe, być może jakiegoś od dawna nie żyjącego matematyka
> bardzo ciekawi mnie jak można matematycznie wyprowadzić ten algorytm?
Bardzo łatwo, w systemie o podstawie P wartość liczby o cyfrach (od
najmniej znaczącej) c_1, c_2, ... c_N wynosi:
c_1 + c_2 * P + c_3 * P^2 + ... + c_N * P^(N-1)
Reszta z dzielenia powyższej liczby przez P to oczywiście c_1, zaś
całość z dzielenia przez P wynosi:
c_2 + c_3 * P + ... + c_N * P^(N-2)
teraz reszta z dzielenia przez P to c_2, zaś całość... itd.
--
Piotr Beling - http://qwak.w8.pl http://warcaby.w8.pl http://bcalc.w8.pl
http://kiedygdzie.co
-
23. Data: 2010-11-05 13:08:25
Temat: Re: kodowanie
Od: "identifikator: 20040501" <N...@g...pl>
BIG THANKS Cię się należy!
-
24. Data: 2010-11-05 13:35:27
Temat: Re: kodowanie
Od: Grzegorz Krukowski <r...@o...pl>
On Fri, 5 Nov 2010 11:07:12 +0100, "identifikator: 20040501"
<N...@g...pl> wrote:
>>>> indeks_cyfry = 0;
>>>> while (liczba != 0) {
>>>> cyfry[indeks_cyfry++] = liczba % podstawa_systemu;
>>>> liczba = liczba / podstawa_systemu;
>>>> }
>
>uderz w stół - już jakiś doktorkowy kretyn zadał zadanie abiturientom
>związane z tym algorytmem - widzę po aukcjach na zleceniach...
Tak przejżałem Twoje inne wypowiedzi i ty jesteś z tych ,,genialnych
praktyków'' co im system edukacji zaszkodził.
>
>czy ten algorytm sygnowany jest jakimś nazwiskiem odkrywcy?
>bardzo ciekawi mnie jak można matematycznie wyprowadzić ten algorytm?
>może Ktoś zna jakąś stronkę?
Wynika wprost z budowy systemu pozycyjnego. Każda liczba jest sumą
takich elementów:
stała*podstawa^pozycja
gdzie stała jest od 0 do pozycja (dla 10ego 0-9),
podstawa to wiadomo (10 dla 10ego),
pozycja to rząd, liczony od zera.
I tak liczba 1856 to w systemie 10tnym:
1*10^3 + 8*10^2 + 5*10^1 + 6*10^0
Do tego zachodzi zawsze taka właściwość że suma składników od rzędu
zerowego do n-1 jest zawsze mniejsza od liczby podstawa^n.
Praktycznie używane to jest przy dzieleniu modulo i z resztą:
1856 podzielić przez 10 da nam 1 i reszty 856
|- wynik dzielenia całkowitego
|
1*10^3 + 8*10^2 + 5*10^1 + 6*10^0
------------------------ to jest reszta z dzielenia
Aby przeliczyć na innę podstawę to musisz:
wyliczyć maksymalny rząd liczby ze wzoru
log_nowa_podstawa(liczba) - za rząd przyjmujemy największą
liczbę całkowitą nie większą niż wartość tego logarytmu
log_7(1856)= 3,86, czyli rząd 3
i teraz iteracyjnie
1856 / 7^3 -> 5 reszty 141
141 / 7^2 -> 2 reszty 43
43 / 7^1 -> 6 reszty 1
1 / 7^0 -> 1 reszty 0
Tak więc 1856 dziesiętnie to 5261 siódemkowo
1*10^3 + 8*10^2 + 5*10^1 + 6*10^0 = 5*7^3 + 2*7^2 + 6*7^1 + 1*7^0
Gdybyś zaczął od rzędu drugiego, czyli:
1856 / 7^2 -> 37 reszty 43
to jeżeli wynik dzielenia całkowitego jest większy niż podstawa-1 to
zacząłeś od zbyt niskiego rzędu.
Ta zasada jest na pewno poprawna dla podstaw będących liczbą
naturalną, czy dla innych - nie wiem.
--
Grzegorz Krukowski
-
25. Data: 2010-11-05 14:05:20
Temat: Re: kodowanie
Od: "identifikator: 20040501" <N...@g...pl>
mam jeszcze pytanie,
jak "to coś" się formalnie nazywa?
kodowanie, reprezentacja, system?
chciałem wrzucić na swoją stronkę, ale potrzebna nazwa...
-
26. Data: 2010-11-05 14:07:13
Temat: Re: kodowanie
Od: Grzegorz Krukowski <r...@o...pl>
On Fri, 5 Nov 2010 11:07:12 +0100, "identifikator: 20040501"
<N...@g...pl> wrote:
>>>> indeks_cyfry = 0;
>>>> while (liczba != 0) {
>>>> cyfry[indeks_cyfry++] = liczba % podstawa_systemu;
>>>> liczba = liczba / podstawa_systemu;
>>>> }
>
>uderz w stół - już jakiś doktorkowy kretyn zadał zadanie abiturientom
>związane z tym algorytmem - widzę po aukcjach na zleceniach...
>
>czy ten algorytm sygnowany jest jakimś nazwiskiem odkrywcy?
>bardzo ciekawi mnie jak można matematycznie wyprowadzić ten algorytm?
>może Ktoś zna jakąś stronkę?
--
Grzegorz Krukowski
-
27. Data: 2010-11-05 14:18:42
Temat: Re: kodowanie
Od: Grzegorz Krukowski <r...@o...pl>
On Fri, 5 Nov 2010 11:07:12 +0100, "identifikator: 20040501"
<N...@g...pl> wrote:
>>>> indeks_cyfry = 0;
>>>> while (liczba != 0) {
>>>> cyfry[indeks_cyfry++] = liczba % podstawa_systemu;
>>>> liczba = liczba / podstawa_systemu;
>>>> }
>
>uderz w stół - już jakiś doktorkowy kretyn zadał zadanie abiturientom
>związane z tym algorytmem - widzę po aukcjach na zleceniach...
Tak przejżałem Twoje inne wypowiedzi i ty jesteś z tych ,,genialnych
praktyków'' co im system edukacji zaszkodził.
>
>czy ten algorytm sygnowany jest jakimś nazwiskiem odkrywcy?
>bardzo ciekawi mnie jak można matematycznie wyprowadzić ten algorytm?
>może Ktoś zna jakąś stronkę?
(! Poprawiłem bo pomieszałem oznaczenia gdzieniegdzie)
Wynika wprost z budowy systemu pozycyjnego. Każda liczba jest sumą
takich elementów:
stała*podstawa^rząd
gdzie stała jest od 0 do podstawa-1 (dla 10ego 0-9),
podstawa to wiadomo (10 dla 10ego),
rząd, liczony od zera, najbardziej prawa cyfra ma rząd zero,
liczba n cyfrowa ma rząd n-1
I tak liczba 1856 to w systemie 10tnym:
1*10^3 + 8*10^2 + 5*10^1 + 6*10^0
Do tego zachodzi zawsze taka właściwość że suma składników od rzędu
zerowego do n-1 jest zawsze mniejsza od liczby podstawa^n.
Praktycznie używane to jest przy dzieleniu modulo i z resztą:
1856 podzielić przez 10^3 (1000) da nam 1 i reszty 856
|- wynik dzielenia całkowitego
|
1*10^3 + 8*10^2 + 5*10^1 + 6*10^0
------------------------ to jest reszta z dzielenia
Aby przeliczyć na innę podstawę to musisz:
wyliczyć maksymalny rząd liczby ze wzoru
log_nowa_podstawa(liczba) - za rząd przyjmujemy największą
liczbę całkowitą nie większą niż wartość tego logarytmu
log_7(1856)= 3,86, czyli rząd 3
i teraz iteracyjnie
1856 / 7^3 -> 5 reszty 141
141 / 7^2 -> 2 reszty 43
43 / 7^1 -> 6 reszty 1
1 / 7^0 -> 1 reszty 0
Tak więc 1856 dziesiętnie to 5261 siódemkowo
1*10^3 + 8*10^2 + 5*10^1 + 6*10^0 = 5*7^3 + 2*7^2 + 6*7^1 + 1*7^0
Gdybyś zaczął od rzędu drugiego, czyli:
1856 / 7^2 -> 37 reszty 43
to jeżeli wynik dzielenia całkowitego jest większy niż podstawa-1 to
zacząłeś od zbyt niskiego rzędu.
Ta zasada jest na pewno poprawna dla podstaw będących liczbą
naturalną, czy dla innych - nie wiem. I czy poprawnie używam nazwy
rząd.
--
Grzegorz Krukowski
-
28. Data: 2010-11-05 14:30:10
Temat: Re: kodowanie
Od: "identifikator: 20040501" <N...@g...pl>
dzięki,
ale naszły mnie pewne wątpliwości, jak na przykład zamienić liczbę w
systemie dziewiątkowym (1-8) na piątkowy (1-4)?
muszę się nad tym jeszcze pozastanwaiać, chyba, że Ktoś wklei gotowca?
-
29. Data: 2010-11-05 14:44:34
Temat: Re: kodowanie
Od: qwak <q...@w...pl>
W dniu 05.11.2010 15:30, identifikator: 20040501 pisze:
> dzięki,
> ale naszły mnie pewne wątpliwości, jak na przykład zamienić liczbę w
> systemie dziewiątkowym (1-8) na piątkowy (1-4)?
chyba (0-8) i (0-4)
Na ogół komputery liczą w systemie 2-kowym.
Więc dobrze jest dokonać 2ch konwersji:
1) dziesiątkowy -> dwójkowy (czyli wczytać do zmiennej liczbowej)
2) dwójkowy -> piątkowy
>
> muszę się nad tym jeszcze pozastanwaiać, chyba, że Ktoś wklei gotowca?
>
na część (2) gotowiec już podałem, część (1) jest łatwiejsza, więc
myślę, że dasz sobie radę
--
Piotr Beling - http://qwak.w8.pl http://warcaby.w8.pl http://bcalc.w8.pl
http://kiedygdzie.co
-
30. Data: 2010-11-05 15:06:58
Temat: Re: kodowanie
Od: Grzegorz Krukowski <r...@o...pl>
On Fri, 5 Nov 2010 15:30:10 +0100, "identifikator: 20040501"
<N...@g...pl> wrote:
>dzięki,
>ale naszły mnie pewne wątpliwości, jak na przykład zamienić liczbę w
>systemie dziewiątkowym (1-8) na piątkowy (1-4)?
Najlepiej bezpośrednio, ale w praktyce narzędzia liczące liczą w
systemie dziesiętnym, dwójkowym lub szesnastkowym i wygodnie jest to
zrobić z krokiem pośrednim w którymś z tych systemów.
>
>muszę się nad tym jeszcze pozastanwaiać, chyba, że Ktoś wklei gotowca?
Tu nie ma się co zastanawiać, stosujesz podane metody mechanicznie.
--
Grzegorz Krukowski