[ xtraya @ 13.11.2002. 02:17 ] @
ajte matematicari na brzinu nesto o bin mnozenju sa ponekim primerom

hvala
[ anon315 @ 13.11.2002. 13:21 ] @
A što ne bi moglo . Inače, ovo bi trebalo da znaju svi koji se ozbiljnije bave računarima, programiranjem itd, a ne samo matematičari ...

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