Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - for i:= 0 to 2^x


lkz633 - So 12.10.03 01:17
Titel: for i:= 0 to 2^x
Hallo,

die Ueberschrift macht es vermutlich schon deutlich, ich moechte eine Schleife bis 2^i laufen lassen.

Alle Versuche schlugen jedoch fehl, da ich immer Extended fuer meine Berechnungen rausbekomme, da immer eine Multiplikation vorkommt.

Auch eine Typumwandlung schlug fehl. Der Wert wird (2^7)+1 nicht uebersteigen.

Was kann ich tun?

Dank und Gruss
lkz633


AndyB - So 12.10.03 01:40

Da der Computer sehr gerne mit 2er Potenzen arbeitet, hat er natürlich auch demensprechende Befehle:


Quelltext
1:
for i := 0 to (1 shl x) do                    



SHL steht für ShiftLeft.

Das funktioniert so:
0000 0001 SHL 1 = 0000 0010
0000 0001 SHL 2 = 0000 0100
0000 0001 SHL 3 = 0000 1000
...


JoelH - So 12.10.03 10:20
Titel: hmm,
in solchen Fällen hilft sehr oft mit round das Ergebnis zur Integer zu machen ;)


maximus - So 12.10.03 11:27
Titel: Re: hmm,
JoelH hat folgendes geschrieben:
in solchen Fällen hilft sehr oft mit round das Ergebnis zur Integer zu machen ;)


:?: warum integer nach athen tragen :?:


lkz633 - So 12.10.03 12:43

AndyB hat folgendes geschrieben:


Quelltext
1:
for i := 0 to (1 shl x) do                    



SHL steht für ShiftLeft.


Super, herzlichen Dank, das ist natuerlich die schoenste und eleganteste Loesung. (Vermutlich auch die schnellste??)

Gruss lk633