liczby

0

musze napisac program ktory bedzie dzialal na baardzo duzych liczbach
jakich uzyc formatuf? moze sa jakies komponenty do delphi dzieki ktorym mozna obliczyc cos wiecej niz extended (chyba)

moze znacie jakies strony o zastowsowaniu Matematyki przez duze "M" w programowaniu?
chodzi mi dokladnie o liczby krolewskie i pierwsze

0

musze napisac program ktory bedzie dzialal na baardzo duzych liczbach
jakich uzyc <font color="red">formatuf</span>? moze sa jakies komponenty do delphi dzieki ktorym mozna obliczyc cos wiecej niz extended (chyba)

moze znacie jakies strony o zastowsowaniu Matematyki przez duze "M" w programowaniu?
chodzi mi dokladnie o liczby krolewskie i pierwsze

Assembler. Chcesz liczbę z zakresu 0..4294967296^4294967296 ? Idealne do liczenia atomów we wszechświecie... I możliwe. Ale nie do mnie o szczegóły, bo jakoś mi ten język jakoś nie wchodzi i po prostu mam go w pierwszych trzech literach jego nazwy, za przeproszeniem.

0

dobrze ale najpierw trzeba to umiec chyba ze ktos mi udowodni ze to jest takie proste to sie sam wezme za assemblera:)

0

na razie czekam na rozwiazania w pascalu lub delphi no i jakies ciekawe stronki

0

Dodawanie i odejmowanie jest banalnie proste.
add eax, edx - dodaje to samo co eax := eax + edx
adc eax, edx - dodaje to samo co eax := eax + edx + przeniesienie z ostatniej operacji
mov edx, Zmienna - kopiuje zmienną do edx
mov Zmienna, eax - kopiuje zawartość eax do zmiennej

Przykład.

type TLiczba = array [0..3] of DWord;
var
L1, L2, L3: TLiczba;
begin
asm
mov eax, dword ptr L1[0]
mov edx, dword ptr L2[0]
add eax, edx
mov dword ptr L3[0], eax
mov eax, dword ptr L1[1]
mov edx, dword ptr L2[1]
adc eax, edx
mov dword ptr L3[1], eax
mov eax, dword ptr L1[2]
mov edx, dword ptr L2[2]
adc eax, edx
mov dword ptr L3[2], eax
mov eax, dword ptr L1[3]
mov edx, dword ptr L2[3]
adc eax, edx
mov dword ptr L3[3], eax
end;
end;

Proste? To oczywiście jest tak zapisane tylko po to, aby było widać prostotę całości. Należałoby to przepisać z nacznie elegancki sposób, tak, że niezależnie od długości liczby można byłoby je sumować.
Ale jeżeli nie chcesz bawić się w asm, to na www.torry.net jest moduł do operacji na liczbach nieskończonej długości integer_asm.pas.

0

co to znaczy ptr ?

0

co to znaczy ptr ?

ptr to skrót od pointer - czyli wskaźnik

mov eax, dword ptr L1[0]

oznacza tyle, co "wstaw do eax wartość wskazywaną przez L1". [0] określa przesunięcie (tu zerowe).

0

no a nie można wstawić do eax bezpośrednio L1[0] ?
mov eax, L1[0]

//nie cytuj całych postów (jak są długie)
//temat został wyjaśniony? via gg

0

no dobra zrobilem sobie prosty program w delphi do obliczania liczbb doskonalych i hmmm liczby do kilku milionuf jakos oblicza a pozniej po prostu przestaje odpowiadac, nie wyswietlaja sie zadne bledy i trzeba go ctrl+alt+del potraktowac.
jak zmodyfikowac kod zeby program odpowiadal w czasie liczenia?
troche zagmatfalem ale...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0