eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingkodowanie › Re: kodowanie
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Grzegorz Krukowski <r...@o...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: kodowanie
    Date: Fri, 05 Nov 2010 14:35:27 +0100
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 70
    Message-ID: <i...@4...com>
    References: <iaf4vj$bul$1@mx1.internetia.pl> <iaha2l$ti6$1@mx1.internetia.pl>
    <iahdna$ruq$1@node1.news.atman.pl> <iak1mr$h1o$1@mx1.internetia.pl>
    <iak2u4$a9s$1@node1.news.atman.pl> <ib0l9o$t0r$1@mx1.internetia.pl>
    NNTP-Posting-Host: ti0010a380-1200.bb.online.no
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1288964129 5452 85.164.164.178 (5 Nov 2010 13:35:29 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Fri, 5 Nov 2010 13:35:29 +0000 (UTC)
    X-Newsreader: Forte Agent 6.00/32.1186
    X-User: registered.user
    Xref: news-archive.icm.edu.pl pl.comp.programming:187236
    [ ukryj nagłówki ]

    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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: