[Systemy liczbowe] Zamiana z 4 na 8.

Macjej
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 13 gru 2013, o 11:40
Płeć: Mężczyzna
Lokalizacja: Tarnowskie Góry

[Systemy liczbowe] Zamiana z 4 na 8.

Post autor: Macjej »

Witam, jestem na studiach informatycznych na 1 roku. Otrzymałem zadanie w którym mam zamienić liczby z systemu 10->2->4->8->16. Z zamianą na 2 i 4 nie było żadnego problemu. Stąd pytanie, czy da się zamienić bezpośrednio liczbę z systemu 4 na 8? Czy trzeba przeliczać "na około", zamieniając najpierw na system binarny, a potem na ósemkowy. Z góry dziękuję za odpowiedzi.
Awatar użytkownika
leszczu450
Użytkownik
Użytkownik
Posty: 4414
Rejestracja: 10 paź 2012, o 23:20
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 1589 razy
Pomógł: 364 razy

[Systemy liczbowe] Zamiana z 4 na 8.

Post autor: leszczu450 »

Macjej, może i się da, ale po co? : )
Gouranga
Użytkownik
Użytkownik
Posty: 1588
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[Systemy liczbowe] Zamiana z 4 na 8.

Post autor: Gouranga »

bardzo łatwo się zamienia między systemami, których podstawy są potęgami tej samej liczby

spójrz na liczbę w dwójkowym:
\(\displaystyle{ 1 1 0 0}\)
mamy tu oczywiste: \(\displaystyle{ 0\cdot 1 + 0\cdot 2 + 1\cdot 4 + 1\cdot 8 = 12}\)

a teraz ten sam ciąg bitów pogrupuj po 2
\(\displaystyle{ 11 \ 00}\)
teraz każdy z tych ciągów zamień na czwórkowy i otrzymasz \(\displaystyle{ (30)_4 = 12}\)
możesz zamienić na ósemkowy grupując po 3 bity (bo \(\displaystyle{ 2^3 = 8}\)
\(\displaystyle{ 001 \ 100}\)
zamieniasz i masz \(\displaystyle{ (14)_8 = 12}\)

itd.
mając liczbę np. w trójkowym
\(\displaystyle{ (10201)_3 = 100}\)
możesz ją zamienić na dziewiątkowy grupując po 2
\(\displaystyle{ 01 \ 02 \ 01 = (121)_9 = 100}\)
itd..
Macjej
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 13 gru 2013, o 11:40
Płeć: Mężczyzna
Lokalizacja: Tarnowskie Góry

[Systemy liczbowe] Zamiana z 4 na 8.

Post autor: Macjej »

Dziękuję bardzo, czyli jednak, nawet jeśli istnieje taki sposób, to nie jest to proste : >. Jeszcze raz dzięki.
Anthil
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 8 wrz 2007, o 15:57
Płeć: Mężczyzna
Lokalizacja: z Miasta
Pomógł: 1 raz

[Systemy liczbowe] Zamiana z 4 na 8.

Post autor: Anthil »

Przecież Tobie napisał jak to zrobić o.O przez pogrupuj ma na myśli np. w dziesiętnym 12, w dwójkowym 1100 teraz z dwójkowego na czwórkowy robisz 11 00 pierwsze dwie cyfry (11) to w dwójkowym co jest? Oczywiście że 3 a (00) w dwójkowym to co? To oczywiście 0. Masz więc 11 00 = 3 0 a te 30 to w czwórkowym 12. Z oktalnym tak samo ale musisz mieć po 3 bity czyli jak kolega wyżej pokazał 1100 rozbijasz na 001 100 (dwa zera z przodu dopisujesz). Łatwe w implementacji.
valgodeskom
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 1 lut 2014, o 16:13
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Systemy liczbowe] Zamiana z 4 na 8.

Post autor: valgodeskom »

Nie trzeba zamieniać liczby za każdym razem na system dziesiętny. Komputer i tak pamięta ją zawsze jako liczbę w sys. dwójkowym.

Prosta metoda - i prosta implementacja na dowolny język programowania.

Dla liczby całkowitej:
* dzielimy liczbę przez podstawę nowego systemu i odpisujemy resztę z tego dzielenia (to kolejne cyfry w liczbie w nowym systemie), a z całkowitym wynikiem dzielenia postępujesz tak samo (rekurencyjnie)

Dla liczby ułamkowej
* mnożymy część ułamkową liczby przez podstawę nowego systemu i odpisujemy od wyniku część całkowitą (to kolejne cyfry po przecinku w liczbie ułamkowej w nowym systemie), a z pozostałą częścią ułamkową postępujesz tak samo (rekurencyjnie)

Wynik możesz sobie sprawdzić na:

Kod: Zaznacz cały

http://systemyliczbowe.urfu.pl
ODPOWIEDZ