Systemy liczbowe

0

Witam! Wstyd się przyznać, ale mam problem z bardzo wydawałoby się prostą rzeczą. Otóż, piszę sobie programika i zachciało mi się korzystać z jakiegoś fajnego systemu liczb. Ma to być system, bodajże dwudziesto-czwórkowy. Mają być w nim same literki :) (w decymalnym 1, w tym dziwnym A, w dec. 2, B, 10-J, itd...). I napotkałem problem (jak to ja :) ). Nie wiem, jak zrobić konwersję z systemu przykładowo 20-tkowego (lub jakiegokolwiek innego, powyżej 10) na decymalny (dziesiątkowy) i na odwrót. Szukałem tych informacji w tym serwisie, znalazłem tylko bit - > dec i dec - > bit, w mojej teczce (kiedyś prowadziłem) nt fajnych informacji :P jest opis zamiany, lecz nie mogę sobie tego wyobrazić, jak to by wyglądało w kodzie.
Bardzo proszę o szybkie odpowiedzi, pozdrawiam KiteK.

0

No to masz coś takiego... Jeżeli 1 odpowiada A, 2 odpowiada B ... 10 odpowiada J, 11 - K, 12 - L itp. to musisz (oj, dostałbym koła z logiki, jakby to mój sor od matmy zobaczył ;) ), możesz zrobić tak: liczba:=ord(literka)-ord('A')+1; i to ci daje "wartość" danej literki. Następnie tak samo jak przy każdym innym systemie liczbowym zamieniasz... załóżmy, że funkcja wartość(x) oznacza to co powyżej, wtedy liczba:=power(wartosc(liczba_w_24[i]), length(liczba_w_24)-i+1)+liczba;
Oczywiście to nie jest kod, ale tak z grubsza chyba da się zrozumieć, na jakiej to zasadzie działa...

0

w systemie np 19 . proponuje sprawdzac czy dana liczba w systemie dzisięstnym po podzieleniu w przez 10 da 0 jeżeli da na to odejmij od niej 10 i podziel przez 9 . moge spróbować to w c++ napisać .

0

Ogólnie zasada zapisu w dowonym systemie jest taka (Adam coś takiego napisał, ale zakręcił ;) )

cpn +...+ cp</sup>2 + cp1 + cp</sup>0 + cp-1 + cp</sup>-2 +...+ c*p^-m

c - cyfra(na odpowiednim miejscu)
p - postawa sytemu
n - dokładność przed przecinkiem
m - po przecinku

Mam nadzieję że to Cię trochę naprowadzi.
Przyponę tylko że przeliczanie na kartce z dzięsiętnego na n-system jest najłatwiejsze (jak dla mnie) metodą słupkową (dzielisz przez p, odkładasz, reszta jest cyfrą.. (od najbardziej znaczącej) i tak w kółko)

Z n-systemu na dziesiętny nie ma najmniejszego problemu (jeśli popatrzysz na powyższy wzór)

0

Kiedyś znalazłem taki program w którym na dośc uniwersalnych zasadach można było konwertować różne liczby w róznych systemach. Niestety nie pamietam linka wiec pozwoliłęm sobie zamieścić ten kod z procedurami na stronie ... :-) . http://www.delphi.is.net.pl/Systemy_liczbowe.rar ( strona jest w budowie, ale jeżeli kogoś interesuje kilka przykładów z programowania - zapraszam na http://www.dominick85.prv.pl)

0

Cześć! Dzięki za wszystkie podpowiedzi. Wczoraj nie zdążyłem już żadnych z nich przeczytać :(. Na polskim napisałem sobie na kartce działanie własnego algorytmu. Będzie wg mnie działał na pewno. Teraz mam go już prawie dopracowanego, jak się uda to wrzucę tutaj kod. Pozdrawiam, KiteK.

1 użytkowników online, w tym zalogowanych: 0, gości: 1