|
Zamiana liczb z dowolnego systemu na dziesiętny |
|
|
|
Napisał: Berl
|
|
wtorek, 11 listopad 2008 |
Aby zamienić liczbę zapisaną w dowolnym systemie na system dziesiętny, należy pomnożyć każdą cyfrę wchodzącą w skład tej liczby przez odpowiednią potęgę podstawy systemu. Potęga ta, to indeks cyfry w liczbie licząc od prawej, i zaczynając liczenie od 0. Przy założeniu, że liczba, którą zamieniamy wygląda następująco :

a podstawa systemu to z, to wzór na zamianę wygląda następująco :

Zaimplementowany algorytm wygląda następująco :
function Dec(Liczba : String ; Podst : Integer) : Cardinal ;
var
Dana : Integer ;
i : Integer ;
begin
Result := 0 ;
if (Liczba = '') or (Podst < 2) or (Podst > 35) then Exit ;
for i := 1 to Length(Liczba) do begin
if Liczba[i] in ['A'..'Z'] then Dana := Ord(Liczba[i]) - Ord('A') + 10
else Dana := StrToInt(Liczba[i]) ;
if Dana >= Podst then begin
Result := 0 ;
Exit ;
end;
Result := Result + Dana * Trunc(Exp((Length(Liczba) - i) * Ln(Podst))) ; // 4
end;
end;
UWAGA! Algorytm działa poprawnie tylko na dużych literach.
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. |