[ xtraya @ 13.11.2002. 02:17 ] @
ajte matematicari na brzinu nesto o bin mnozenju sa ponekim primerom hvala |
[ xtraya @ 13.11.2002. 02:17 ] @
[ anon315 @ 13.11.2002. 13:21 ] @
A što ne bi moglo
![]() Interesantno je reći da se operacije plus i puta, sa stanovišta modernih računara, svode na jednu jedinu operaciju SHIFT po registru (premeštanje bajtova po registru). Nego da se vratim na priču. Da bi shvatio množenje binarnih brojeva moraš znati sabiranje, tako da podrazumevam da to znaš. Postoji, koliko ja znam, tri pristupa: 1. Repeated addition 2. Treat as a multi-line addition 3. Repeated shift and add Ja ću objasniti ovo pod 1, a ukoliko nekog zanimaju ostali metodi može pogledati ovde. Inače, ukoliko nekog zanimaju sistemi za predstavljanje brojeva: binarni, hexadecimalni, oktalni, dekadni može baciti pogled ovde. Konačno, evo odgovora na tvoje pitanje: Metoda se sastoji iz nekoliko koraka i petlje, da tako kažem: Pretpostavimo da treba pomnožiti sledeća dva binarna broja: 1) 1001 2) 100100, odnosno u dekadnom: 1) 9 2) 36 Prvi korak je da podesiš rezultat na nulu: 1001 X 100100 0 Drugi je: dodati drugi broj kao rezultat, dakle: 1001 X 100100 100100 Treći: zatim se prvi broj smanji za 1: 1000 X 100100 100100 Četvrti: proveriš da li je prvi broj sada nula. Ako jeste, onda je poslednji rezultat ono što traziš, a ukoliko nije, onda ponoviš postupak: dodavanje drugog trenutnom rezultatu (znači sabiranje je u pitanju), smanjivanje prvog za jedan, pa opet test ... To bi u ovom slučaju izgledalo ovako, korak po korak: 1000 X 100100 1001000 111 X 100100 1001000 111 X 100100 1101100 110 X 100100 1101100 . . . i da ne pišem sve, konačno kada prvi bude dogurao do nule, onda je poslednji rezultat proizvod ona dva broja ( 1), 2) ), u ovom slučaju to je 101000100, odnosno 324 u dekadnom, a kad se proveri to zaista i jeste 9 X 36. To bi bio neki algoritam. Nadam se da nema nejasnoća, ako ima pitaj. Hm, a šta mislite o ovome: 1001 X 100100 0000 0000 1001 0000 0000 1001 ------------------ 101000100 Napominjem da je ove četvorobitne brojke elitesecurity formatirao tako što ih je sve dogurao do leve margine, a jasno je da, kao kod običnog množenja, svaki viši broj je pomeren za jedan u desno više od onog ispod njega. Ajmo podpitanje: deljenje !?! poz. [ xtraya @ 15.11.2002. 00:23 ] @
Hvala puno....jasnije je....
[ jovanmal @ 30.09.2003. 14:46 ] @
Citat: Interesantno je reći da se operacije plus i puta, sa stanovišta modernih računara, svode na jednu jedinu operaciju SHIFT po registru (premeštanje bajtova po registru). Jel može malo više o ovome? Šta je operacija SHIFT? [ jeremy @ 30.09.2003. 15:02 ] @
Citat: jovanmal: Jel može malo više o ovome? Šta je operacija SHIFT? SHIFT je jednostavno pomeranje svih bitova u levo ili u desno, gde se gubi prvi odnosno poslednji bit u binarnoj reci. Radio sam prosle godine za seminarski operacije sa velikim brojevima, sve operacije su vrsene na binarnom nivou, pogledaj: (tu mozes naci i source u C++) mozda ti pomogne http://www.jwork.net/programir...e.php?page=cpp/velikibroj/docs [ TiXo @ 30.09.2003. 16:05 ] @
ako je potrebno ručno množenje.... šta fali običnom množenju?
pokušao sam ovim tačkicama da sredim ovaj ispis i ovo je najbolje što sam uspeo kod mene u firebirdu... ako vam ispis nevalja, samo potpisujete kao da množite *normalne* brojeve 101101*1001= ~~~~~~~~~~~~~~~~~~~ ..........101101 .........000000 ........000000 add.101101 ------------------- 110010101 Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|