Autor: Marcin Frankowski (ab_at_anti.spam.com)
Data: Thu 21 Jan 1999 - 01:12:54 MET
Mariusz Ck <maciesla_at_polbox.com> wrote in article
<36A606AF.3F76FA5D_at_polbox.com>...
> Zadanie z pierwszej klasy szko?y średniej o profilu informatycznym.
>
> Czy ktoś jest w stanie wyjaśni? mi podstawy przedstawiania liczb w
> systemie dwójkowym, czwórkowym, ósemkowym i szesnastkowym????
>
> Dwójkowy, dziesi?tny i szesnastkowy system znam, a o czwórkowym czy
> ósemkowym w ?yciu nie s?ysza?em.
> Czy ktoś mnie oświeci, chocia? orientacyjnie.
>
> Interesuje mnie przeliczanie na ró?ne systemy zarówno w jedn? stron? jak
> i w drug?.
Po pierwsze nie koduj w HTMLu.
Po drugie - rozumiem, że pytanie może być dla Ciebie bardzo ważne, ale
naprawdę nie trzeba wysyłać tego samego postu, aby zwiększyć
prawdopodobieństwo odpowiedzi.
Po trzecie: wszystkie systemy pozycyjne liczenia mają tę samą zasadę: 1.
zakładamy, że podstawą systemu jest jakaś liczba naturalna n>1 (dla n=1 nie
da rady, to nie jest system pozycyjny);
2. bierzemy liczbę w postaci a(m) a(m-1) ... a3 a2 a1 a0, gdzie a to
dowolna cyfra należąca do danego układu liczenia (czyli z przedziału 0 -
n-1).
3. z definicji pozycyjnego układu liczenia mamy, że każdej pozycji
przyporządkowana jest waga w postaci n do potęgi równej numerowi indeksu
(jak w przykładzie z p-tu 2). Najmniejszą wagę, równą n do potęgi 0 czyli
jeden, ma pozycja po prawej stronie, druga od prawej ma wagę n do potęgi
jeden czyli n, potem n do potęgi 2, czwarta od prawej n do potęgi 3 itd.
Wartość liczby uzyskuje się przez pomnożenie każdej cyfry przez wagę jej
pozycji i zsumowanie iloczynów. W przykładzie ogólnym z p-tu 2 to będzie a0
* 1 + a1 * n + a2 * n^2 + a3 * n^3 + ... + a(m-1) * n^(m-1) + a(m) * n^m.
We wspomnianych przez Ciebie systemach: czwórkowym i ósemkowym jedna cyfra
reprezentuje odpowiednio dwa i trzy bity liczby w systemie dwójkowym. Aby
przejść z systemu dwójkowego na czwórkowy dzielisz liczbę dwójkową na
segmenty dwubitowe poczynając od prawej strony (segment z lewej strony może
zawierać jeden lub dwa bity) i zastępujesz je wartościami: 00 to 0; 01 to
1, 10 to 2, 11 to 3. np. 100110111(2) = 10313(4) = 311(10)
Analogicznie postępuje się z przejściem l. dwójkowa - l. ósemkowa, tylko
dzieli się na grupy trzybitowe. Wartości to 000 - 0, 001 - 1 ... 100 - 4,
.. 111 - 7.
Łatwo przelicza się liczbę szesnastkową na czwórkową: każdą cyfrę liczby
szesnastkowej zastępuje się dwucyfrowym blokiem czwórkowym wg. zasady: 0 -
00, 1 - 01, ... 4 - 10, ... 7 - 13, 8 - 20, ... C - 30, D - 31, E - 32, F -
33 (3*4+3 = 15 =FH, nieprawdaż?). Konwersja l. czwórkowa - l. szesnastkowa
odbywa się analogicznie (po dwie cyfry l. czwórkowej zamienia się na cyfrę
l. szesnastkowej).
Przejście z postaci czwórkowej na ósemkową, ósemkowej na szesnastkową i
odwrotnie nie jest już takie proste - najprostrze do opisania jest
przechodzenie za pośrednictwem liczby dwójkowej (nie chce mi się klepać na
temat możliwych metod uproszczenia tego). Wbrew pozorom nie warto
przechodzić za pośrednictwem liczby dziesiętnej - liczba pośrednia jest
łatwa do zrozumienia, ale zamiana jej na inną postać jest zdecydowanie
trudniejsza.
-- Marcin (uwaga: adres w nagłówku jest antyspamowy, poprawny to marcinf_at_strip.net.nz )
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 18:06:48 MET DST