[Systemy liczbowe] Zamiana z 4 na 8.
-
- 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.
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.
- leszczu450
- 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
-
- 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.
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..
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..
-
- 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.
Dziękuję bardzo, czyli jednak, nawet jeśli istnieje taki sposób, to nie jest to proste : >. Jeszcze raz dzięki.
-
- 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.
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.
-
- Użytkownik
- Posty: 2
- Rejestracja: 1 lut 2014, o 16:13
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
[Systemy liczbowe] Zamiana z 4 na 8.
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:
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