Konwersja systemów liczbowych

Na poprzedniej lekcji poznałeś czym są systemy liczbowe oraz jak dokonać konwersji z systemu dziesiętnego na inny system o podstawie od 2 do 10 i na odwrót. Teraz pora poznać algorytmy, który pozwalają dokonywać konwersji.

Program konwertujący liczbę z systemu dziesiętnego do systemu o podstawie od 2 do 10

Kod programu Python

podstawa=int(input())
liczba=int(input())

T=[]
wynik=0

while(liczba>0):
  T.append(liczba%podstawa)
  liczba//=podstawa

T.reverse()
for i in range(len(T)):
  wynik*=10
  wynik+=T[i]

print(wynik)

Dane wypisane do konsoli

2
123

Wynik wypisany w konsoli

1111011

Dane wypisane do konsoli

8
123

Wynik wypisany w konsoli

173

Dane wypisane do konsoli

10
123

Wynik wypisany w konsoli

123

Z pomocą dodatkowej zmiennej “wynik”, a także pustej listy “T” tworzymy pętle, która umieszcza na liście T reszty z dzielenia przez podstawę. Obracamy listę i kolejną pętlą powtarzaną przez długość listy T składamy nasz wynik w całość.

Program konwerujący liczbę z systemu o podstawie od 2 do 10 do systemu dziesiętnego

Kod programu Python

podstawa=int(input())
liczba=input()

wynik=int(liczba[0])

for i in range(1, len(liczba)):
  wynik*=podstawa
  wynik+=int(liczba[i])

print(wynik)

Dane wypisane do konsoli

2
1111011

Wynik wypisany w konsoli

123

Dane wypisane do konsoli

8
173

Wynik wypisany w konsoli

123

Dane wypisane do konsoli

10
123

Wynik wypisany w konsoli

123

Wczytujemy podstawę pierwotnego systemu liczby oraz liczbę, która zapisana jest jako typ string, abyśmy mogli łatwo dostać się do i-tej cyfry. Przy takim zapisie liczby musimy pamiętać, że musimy zmienić jej typ na int aby móc potem dodać ją do zmiennej wynik. Zauważ, że i-ta cyfra, liczona od lewej, zostanie pomnożona przez podstawę do potęgi len(liczby)-i, czyli takiej jakiej trzeba, aby móc przekonwertować liczbę do systemu dziesiętnego.

Poprzednia lekcja Następna lekcja