Witam,

Mam takie dość banalne pytanie, otóż przeglądałem algorytm przeliczania liczby stałoprzecinkowej na liczbę w innym systemie, np. z

567.3410

na czwórkowy.

Na tej stronie

http://edu.i-lo.tarnow.pl/inf/alg/006_bin/0004.php

jest pokazane żeby w przypadku naszej liczby .34 mnożyć ją przez 4 i brać części całkowite jako kolejne liczby po kropce dziesiętnej w systemie czwórkowym.

Jest to objaśnione po zdaniu:

Pomnóżmy część ułamkową przez podstawę p. Otrzymamy:
[...]
Co uzyskaliśmy w wyniku? Wynikowa liczba ma przesunięte wszystkie cyfry zapisu o jedną pozycję w lewo. Pierwsza cyfra ułamkowa stała się teraz cyfrą całkowitą.

I tego do końca nie rozumiem. Przecież żeby p-1*p zamieniło się w p0 w przytoczonym wzorze - a więc pierwszą cyfrę przed kropką dziesiętną - oba p muszą być tą samą liczbą, czyli trzeba mnożyć ułamek przez podstawę systemu, w której sam ułamek jest zapisany. Np. 0.5610 stanie się 5.6 jeśli pomnożymy ułamek przez jego podstawę systemu a więc 10.

Więc dlaczego poprawne jest zamienianie ułamka w dowolnym systemie na inny docelowy system mnożąc ułamek przez podstawę tego docelowego systemu (jak chcemy zamienić na czwórkowy system to mnożymy ułamek w systemie dziesiętnym przez 4) ? Przecież podstawa p wg tego wzoru musi być jedna i ta sama, więc teoretycznie mozliwe by były "konwersje" na ten sam system:

0,5610 na dziesiętny to:

0,56 * 10 = 5,6 -> bierzemy 5
0,6 * 10 = 6,0 -> bierzemy 6

i mamy 0,56.

I taką bezsensowną konwersję rozumiem bo p i p w wyrażeniu p-1 * p to te same liczby czyli 10-1 * 10, a nie rózne, jak np. przy zamienianiu na czwórkowy z dziesiętnego: 10-1 * 4.

Mam nadzieję, że za bardzo tego nie zaciemniłem. Czy mógłby mi ktoś wytłumaczyć dlaczego pomimo nieprawidłowego stosowania tego wzoru (wg mnie, bo przecież p to stała przyjmująca jedną ustaloną wartość a nie różne) wyniki przy przeliczaniu pomiędzy róznymi systemami wychodzą dobrze ?