Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mnozenje n-bitnih brojeva

[es] :: C/C++ programiranje :: mnozenje n-bitnih brojeva

[ Pregleda: 3179 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

[email protected]
Zarko Bulatovic
H1 Telekom, UNIX Systems Engineer
Split, Spinut

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon mnozenje n-bitnih brojeva14.06.2005. u 00:04 - pre 189 meseci
treba mi algoritam za mnozenje dva n-bitna binarna broja u C-u. algoritam sam napisa po skolskom primjeru mnozenja binarih brojeva, ali je prespor i ima preveliku kompleksnost. trebalo bi mi nesto poput strassenovog algoritma pomocu brzih fourierovih transformacija, ali nemogu niti nac pseudokod na netu za to. i bilo bi idealno kad bi se algoritam mogao prilagoditi da radi sa binarnim brojem koji je reprezentiran bool poljem, a ne integerom. hvala unaprijed.
[12:33am] <alek> deca od 3-5 godina prvi spoznaju ljubav bozju :)


Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
*.neobee.net.



+1 Profil

icon Re: mnozenje n-bitnih brojeva16.06.2005. u 22:43 - pre 189 meseci
Probaj nesto ovako:

struct VelikiBroj {
...
}TVelikiBroj, PVelikiBroj*;

// ne znam kako si ga nazvao pa cisto ... :) a i vise ce biti pseudo kod ...

void DodajNa(PVelikiBroj a, PVelikiBroj b); //napravis funkciju koja na veliki broj dodaje drugi ... (algoritam sa Carry-jem i jednom for petljom)

bool BitAt(PVelikiBroj a, int pozicija); //vraca da li je bit na poziciji "upaljen"

void ShiftIt(PVelikBroj a); //siftuje sve upaljene bit-ove za jedan na levo ...

PVelikiBroj Mnozi(PVelikiBroj a, PVelikiBroj b){

PVelikiBroj rezultat = alociraj memoriju i postavi na 0;

for(int i=0;i<BinearnihCifara(b);i++){
if(BitAt(a,i))
DodajNa(rezultat,b);
ShiftIt(b);
}

return rezultat;
}
// samo pazi, funkcija ovakva kakva je menja sadrzaj broja b, pa napravi ili lokalnu kopiju ili prilikom zvanja posalji kopiju ukoliko ti treba original ...

Eventualna optimizacija je da u for petlju stavis broj sa manje "upaljenih" bitova...




 
Odgovor na temu

[es] :: C/C++ programiranje :: mnozenje n-bitnih brojeva

[ Pregleda: 3179 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.