View Single Post
Sitat av etse Vis innlegg
J vil derfor hoppe i mellom positive og negative tall helt til den p.g.a. overflow ender med en binær verdi som er lik 0.
Vis hele sitatet...
Vel, dette er ikke så utrolig viktig for oppgaven, men du er inne på noe riktig. Observer at 1337 = 1 (mod 2) og 42 = 2 (mod 4). Hvis du har en programmeringskalkulator som viser binærverdien til decimaltallene du regner ut (f.eks. den i Windows7 når du trykker ALT+3) så vil du se at for hver gang det ganges med 42 så skiftes binærverdien av j et hakk mot venstre.

Sitat av etse Vis innlegg
For hver av gangene J blir ganget med 42 vil også dette skje:

do k -= i += (i<0) + i;

når løkken er kjørt ferdig, og j tilfeldigvis er blitt 0 (grunner overflow, som forklart over). så vil funksjonen returnere verdien til k.
Vis hele sitatet...
Så dette er ikke veldig tilfeldig. Det kunne tilsvarende stått stått j=1 og

Kode

do...while (j <<= 1)
Sitat av etse Vis innlegg
Ble kanskje litt rotete forklart, men jeg regner med jeg er sporet av svaret? Kan dyret bekrefte dette?
Vis hele sitatet...
Siden j er totalt uavhengig av i vil det bli et fast antall runder i funksjonen hver gang. Men hva k faktisk tilsvarer til slutt har du ikke løst enda :P
Et hint kan være å prøve verdiene 255 og 256.
Sist endret av Dyret; 15. april 2010 kl. 17:44.