Sprawdź się
Napisz program, który przekształci liczbę zapisaną w systemie szesnastkowym do postaci w systemie dziesiętnym. Wynik działania programu przetestuj dla liczba = "3C5A7D".
W rozwiązaniu wykorzystaj schemat Hornera.
Specyfikacja:
Dane:
liczba– łańcuch znaków; liczba zapisana w systemie szesnastkowym
Wynik:
Program wypisuje na wyjście standardowe liczbę w systemie dziesiętnym.
Przykładowe rozwiązanie zadania:
def wez_wartosc_liczbowa(cyfra):
if cyfra == "A":
return 10
elif cyfra == "B":
return 11
elif cyfra == "C":
return 12
elif cyfra == "D":
return 13
elif cyfra == "E":
return 14
elif cyfra == "F":
return 15
else:
return int(cyfra)
if __name__ == "__main__":
liczba = "3C5A7D"
liczba_dziesietna = wez_wartosc_liczbowa(liczba[0])
liczba_binarna = ""
for i in range(1, len(liczba)):
wartosc_cyfry = wez_wartosc_liczbowa(liczba[i])
liczba_dziesietna = liczba_dziesietna * 16 + wartosc_cyfry
print(liczba_dziesietna)Napisz program, który przekształci liczbę zapisaną w systemie szesnastkowym do postaci binarnej bez zamiany na system dziesiętny, a następnie zliczy wystąpienia cyfry 1 w liczbie binarnej. Wynik działania programu przetestuj dla liczba = "3C5A7D".
Specyfikacja:
Dane:
liczba– łańcuch znaków; liczba zapisana w systemie szesnastkowym
Wynik:
Program wypisuje na wyjście standardowe liczbę cyfr 1, które występują w uzyskanej liczbie w systemie binarnym.
Przykładowe rozwiązanie zadania:
def wez_wartosc_binarna(cyfra):
mozliwosci = {
"0": "0000",
"1": "0001",
"2": "0010",
"3": "0011",
"4": "0100",
"5": "0101",
"6": "0110",
"7": "0111",
"8": "1000",
"9": "1001",
"A": "1010",
"B": "1011",
"C": "1100",
"D": "1101",
"E": "1110",
"F": "1111",
}
return mozliwosci[cyfra]
def konwertuj_szesnastkowy_na_binarny(liczba):
wynik = ""
for i in range(len(liczba)):
wynik += wez_wartosc_binarna(liczba[i])
return wynik
liczba = "3C5A7D"
binarna = konwertuj_szesnastkowy_na_binarny(liczba)
liczba_jedynek = 0
for cyfra in binarna:
if cyfra == '1':
liczba_jedynek += 1
print(liczba_jedynek)Napisz program, który przekształci liczbę zapisaną w systemie szesnastkowym do postaci binarnej tak, aby zwrócona liczba binarna nie zawierała nadmiarowych nieznaczących zer. Wynik działania programu przetestuj dla liczba = "1C5A7D".
Specyfikacja:
Dane:
liczba– łańcuch znaków; liczba zapisana w systemie szesnastkowym
Wynik:
Program wypisuje na wyjście standardowe liczbę w systemie binarnym bez nadmiarowych nieznaczących zer.
Przykładowe rozwiązanie zadania:
def wez_wartosc_binarna(cyfra):
mozliwosci = {
"0": "0000",
"1": "0001",
"2": "0010",
"3": "0011",
"4": "0100",
"5": "0101",
"6": "0110",
"7": "0111",
"8": "1000",
"9": "1001",
"A": "1010",
"B": "1011",
"C": "1100",
"D": "1101",
"E": "1110",
"F": "1111",
}
return mozliwosci[cyfra]
def konwertuj_szesnastkowy_na_binarny(liczba):
wynik = ""
for i in range(len(liczba)):
wynik += wez_wartosc_binarna(liczba[i])
indeks_pierwszej_jedynki = 0
for i in range(len(wynik)):
if wynik[i] == "1":
indeks_pierwszej_jedynki = i
break
return wynik[indeks_pierwszej_jedynki:len(wynik)]
# Można także użyć wbudowanej funkcji:
# wynik.lstrip("0")
liczba = "1C5A7D"
print(konwertuj_szesnastkowy_na_binarny(liczba))