Rekenen dmv Bit verschuiving

Pagina: 1
Acties:

  • Mir
  • Registratie: Maart 2001
  • Niet online
Ej, ik vroeg me even af hoe het ook alweer moest.

je hebt:


0010 = 2

2 * 2 (1 naar links schuiven)

0100 = 4
4 * 2 (1 naar links schuiven)

1000 = 8


Maar als ik nou met 100 wil vermedigvuldigen...hoe moet je dan uitrekenen hoeveel verschuivingen je moet hebben?

  • gjkamstra
  • Registratie: September 2000
  • Laatst online: 12-09 10:18
Dat kan met de logartitme, 2 log x keer verschuiven, voor 100 komt dit niet echt mooi uit, daar dat geen 2 macht is.

de 2 log is niet te vinden op je calculator, maar is simpel te herschrijven naar 10 log x / 10 log 2, of ln x / ln 2

Hier had een grappige signature moeten staan, maar helaas: geen inspiratie


  • Mir
  • Registratie: Maart 2001
  • Niet online
Uw sorry; even erbij zeggen dat ik echt alleenmaar aan verschuiving mag doen dmv een loopje.


in c++ dus
code:
1
2
3
4
5
 :loop:

    iUitkomst = iGetal << ??

 :/loop:

zoiets...

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op dinsdag 12 maart 2002 00:01 schreef Mir het volgende:
Uw sorry; even erbij zeggen dat ik echt alleenmaar aan verschuiving mag doen dmv een loopje.


in c++ dus
code:
1
2
3
4
5
 :loop:

    iUitkomst = iGetal << ??

 :/loop:

zoiets...
Ehm ja echt C++ :+

maareh wat jij wil kan niet. Immers 100 is geen macht van 2.
stel je hebt getal 1, in bits
0001
x 10 is dat dan (geen macht van 2)
1010
Je ziet dat je met alleen schuiven er niet komt, er komen namelijk nieuwe '1' bits bij.

  • Grum
  • Registratie: Juni 2001
  • Niet online
met 100 vermenigvuldigen is redelijk simpel:
100 = 0110 0100

2*100 word dan
code:
1
2
3
4
5
6
7
         0110 0100 == 100
          ||   |
0000 0010 << 0100 0000 = 1000 0000
0000 0010 << 0010 0000 = 0100 0000
0000 0010 << 0000 0100 = 0000 1000
----------------------------------- +
                 1100 1000 == 200

zoiets :)

  • Mir
  • Registratie: Maart 2001
  • Niet online
Laat zien hoe u een (niet te groot) ingelezen geheel getal op redelijk efficiënte wijze met 100 kunt vermenigvuldigen zonder de operator * te gebruiken.
maak enkele keren gebruik van de operator <<.

Hmmmm....... (dit is een quote vanuit mn leer boeky voor school :) )

Hier probeer ik dus geen script request mee neer te zetten ivm gezeik ed.. Ik wil het principe gewoon weer even weten.

Verwijderd

Met alleen schuiven zal je er echt niet komen.. je moet er een add bij hebben aangezien 100 geen macht van 2 is..

je breekt 100 op in machten van 2 en die tel je op..

100 = 64 + 32 +4
code:
1
2
3
4
5
0010 << 2 = 0000 1000 (*4)
0010 << 5 = 0100 0000 (*32)
0010 << 6 = 1000 0000 (*64)
--------------------------
totaal    = 1100 1000 (*100)

  • Grum
  • Registratie: Juni 2001
  • Niet online
dat zet ik nu net neer ;)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op dinsdag 12 maart 2002 00:07 schreef Mir het volgende:
Laat zien hoe u een (niet te groot) ingelezen geheel getal op redelijk efficiënte wijze met 100 kunt vermenigvuldigen zonder de operator * te gebruiken.
maak enkele keren gebruik van de operator <<.

Hmmmm....... (dit is een quote vanuit mn leer boeky voor school :) )

Hier probeer ik dus geen script request mee neer te zetten ivm gezeik ed.. Ik wil het principe gewoon weer even weten.
Nouja het 'principe' is dus dat je het getal 100 ontleedt in componenten van machten van 2 (wat bij elk getal mogelijk is .. uhm behalve 0)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 12 maart 2002 00:07 schreef Mir het volgende:
Hier probeer ik dus geen script request mee neer te zetten ivm gezeik ed.. Ik wil het principe gewoon weer even weten.
Nou, het principe kan je uit Grum's post halen...
Op dinsdag 12 maart 2002 00:09 schreef Orphix het volgende:
(wat bij elk getal mogelijk is .. uhm behalve 0)
0 ook hoor :)
Geen componenten namelijk ;)

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

ah huiswerk, tssk foei :+
Je moet met machtsverheffen en optellen werken.
100 = 64+32+0+0+4+0+0

Who is John Galt?


  • Mir
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 12 maart 2002 00:06 schreef Grum het volgende:
met 100 vermenigvuldigen is redelijk simpel:
100 = 0110 0100

2*100 word dan
code:
1
2
3
4
5
6
7
         0110 0100 == 100
          ||   |
0000 0010 << 0100 0000 = 1000 0000
0000 0010 << 0010 0000 = 0100 0000
0000 0010 << 0000 0100 = 0000 1000
----------------------------------- +
                 1100 1000 == 200

zoiets :)
dat dacht ik dus ook

maar doe je dan niet gewoon simpel

2 << 8
2 << 32
2 << 64
________+
100

?

Verwijderd

kun je het niet even omrekenen naar decimaal, dan * 100 en dan trug naar binair? :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
jah maar we hebben et over bits dus ik wil even laten zien waar ik het vandaan heb :)

  • Mir
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 12 maart 2002 00:09 schreef ACM het volgende:

[..]

Nou, het principe kan je uit Grum's post halen...
[..]

0 ook hoor :)
Geen componenten namelijk ;)
Haha :D

het gaat hier zo snel dat we langs elkaar heen posten hoor :o

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 12 maart 2002 00:10 schreef Mir het volgende:
100 -> 4*2+32*2+64*2 = 200 ;)

Verwijderd

[halfofftopic]
met php ist superrrsimpel, aangezien je daar bindec() en decbin() hebt... ;)
[/halfofftopic]

  • Mir
  • Registratie: Maart 2001
  • Niet online
maak ik het mezelf nu te moeilijk als ik zeg:

en nu 120 * 5 ofzo?


*moet zeggen dat ik het principe snap maar het nog niet helemaal lekker kan toepassen*

  • Mir
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 12 maart 2002 00:15 schreef zellufs het volgende:
[halfofftopic]
met php ist superrrsimpel, aangezien je daar bindec() en decbin() hebt... ;)
[/halfofftopic]
:P

maar het gaat erom dat ik leer te begrijpen hoe het dmv verschuiving werkt enzo. :)

en dan nog in C++ coden....*bwulp*

Verwijderd

Krijg meteen weer zin om te gaan asm-en..

Shl Ax,2
Shl Ax,5
Shl Ax,6

En hop! Ax is met 100 vermenigvuldigd!

Sim-pel

Verwijderd

5 = 1 + 4

120 << 0 (*1) = 120
120 << 2 (*4) = 480
totaal = 600

hoeveel sommen heb je nog?

Verwijderd

Op dinsdag 12 maart 2002 00:18 schreef Zieke_meeuw het volgende:
Krijg meteen weer zin om te gaan asm-en..

Shl Ax,2
Shl Ax,5
Shl Ax,6

En hop! Ax is met 100 vermenigvuldigd!

Sim-pel
en hop ax is met 8192 vermenigvuldigd bedoel je wellicht?
code:
1
2
3
4
5
6
shl ax,2
mov dx,ax
shl ax,3
add dx,ax
shl ax,1
add dx,ax

Sim-pel

  • Mir
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 12 maart 2002 00:18 schreef Yarvieh het volgende:
5 = 1 + 4

120 << 0 (*1) = 120
120 << 2 (*4) = 480
totaal = 600

hoeveel sommen heb je nog?
1110 =
120 * 14

120 << 0 (*2) = ??
120 << 2 (*4) = ??
120 << 3 (*8) = ??
totaal = ??

klopt dit dan zo?

die ?? kan ik dan nog wel uitrekenen

Verwijderd

Op dinsdag 12 maart 2002 00:21 schreef Mir het volgende:
klopt dit dan zo?
U heeft 'm door ! :Y)

  • Grum
  • Registratie: Juni 2001
  • Niet online
je snaptet princiepe nu jah :)

  • Mir
  • Registratie: Maart 2001
  • Niet online
ik zat dan wel leuk 0 2 3 te doen

maar waar blijft eigenlijk die 1? :)

Verwijderd

Op dinsdag 12 maart 2002 00:23 schreef Mir het volgende:
ik zat dan wel leuk 0 2 3 te doen
maar waar blijft eigenlijk die 1? :)
:?

Verwijderd

Op dinsdag 12 maart 2002 00:21 schreef Mir het volgende:
1110 =
120 * 14

120 << 0 (*2) = ??
120 << 2 (*4) = ??
120 << 3 (*8) = ??
totaal = ??

klopt dit dan zo?

die ?? kan ik dan nog wel uitrekenen
moet die 0 geen 1 zijn dan? aangezien 21= 2

  • Mir
  • Registratie: Maart 2001
  • Niet online
code:
1
2
3
4
5
6
120 * 14
120 << 0 (*2) = ??
              <<<<<, ??  deze 1 dus      
120 << 2 (*4) = ??
120 << 3 (*8) = ??
totaal = ??

Verwijderd

Op dinsdag 12 maart 2002 00:20 schreef Yarvieh het volgende:

en hop ax is met 8192 vermenigvuldigd bedoel je wellicht?
code:
1
2
3
4
5
6
shl ax,2
mov dx,ax
shl ax,3
add dx,ax
shl ax,1
add dx,ax

Sim-pel
Dan is het welterusten voor mij denk ik :Y)

Verwijderd

zoals zellufs alopmerkte *2 is 1 bit naar links.. niet 0..

  • Mir
  • Registratie: Maart 2001
  • Niet online
moet het niet

120 << 1 (*2) = ??
120 << 2 (*4) = ??
120 << 3 (*8) = ??


worden dan?

als dat zo is snap ik het weer dnk ik

TNX!!!!!

  • Mir
  • Registratie: Maart 2001
  • Niet online
woops

ik had zellufs post niet gezien en dacht dat je met "zellufs" zelf bedoelde alleen dan hip getyped ofzo :+

sorry :)
Pagina: 1