Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Potenzieren?
drsnoop - Mi 14.01.04 23:00
Titel: Potenzieren?
sorry, dass ich mit solchen lapalien nerve, aber wie potenziere ich in delphi nochmal?
ich wollte folgendes machen:
Delphi-Quelltext
1:
| 2 "hoch" (length(a)-i) |
a ist vom typen integer... sonst hätte ich "exp" genommen, aber geht net...
und wenn ich das so mache:
sagt der mir "Zeigertyp erwartet" als Fehler...
gibts da nicht ein zeichen oder eine zeichenfolge fürs potenzieren? wollte nämlich auch keine eigene funktion oder prozedur dafür machen...
Christian S. - Mi 14.01.04 23:10
Hallo!
Das Potenzieren funktioniert mit "Power(basis, exponent)" oder "PowerInt(Basis, IntExponent)".
MfG
Peter
//edit: Wenn Du jedoch nur 2^x haben willst, dann solltest Du mal "1 shl x" in Betracht ziehen.
drsnoop - Mi 14.01.04 23:15
Power funktioniert leider nur mit extendet und PowerInt kennt der bei mir nicht... :?
Keldorn - Mi 14.01.04 23:38
drsnoop hat folgendes geschrieben: |
Power funktioniert leider nur mit extendet und PowerInt kennt der bei mir nicht... :? |
IntPower ;) (unit math mit in uses liste aufnehmen)
intpower liefert aber auch einen extended-wert zurück, kannst du mit
Delphi-Quelltext
1:
| i:=round(intpower(x,hochy)) |
in einen integer wandeln
Mfg Frank
Christian S. - Mi 14.01.04 23:46
PowerInt, IntPower, ... wieso ist das denn nicht kommutativ? ;-)
Aber für 2^x wird 1 shl x sehr viel schneller sein!
drsnoop - Mi 14.01.04 23:47
hmm?
wie meinen peter?
Christian S. - Mi 14.01.04 23:54
zu (1):
war 'n Witz. Ich hatte den Funktionennamen falsch hingeschrieben. Umgedreht.
zu (2):
1 shl x verschiebt alle Bits von 1 um x nach links. Das Ergebnis ist 2^x.
z.B.
- 1 in 8 Bit = 00000001
- Verschiebung um 3 nach links ("1 shl 3"): 00001000
- die 1 an der vierten Stelle entspricht der Zahl 8 im Dezimalsystem
- 2^3 = 8
drsnoop - Do 15.01.04 00:00
hmm.... funktioniert eigentlich alles ganz gut...
jedoch haperts jetzt an nem denkfehler im programm... :roll:
möchte eine binärzahl in eine dezimalzahl umwandeln...
so sieht mein sourcecode bisher aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| dualzahl := tf_eingabe.text; for i := length(dualzahl) downto 1 do begin case dualzahl[i] of '1' : dezimalzahl := dezimalzahl + round(IntPower(2,(length(tf_eingabe.text)-i))); '0' : dezimalzahl := dezimalzahl + 0; end; tf_dual.Text := inttostr(dezimalzahl); end end; |
vielleich sollte ich besser schon schlafen gehen... :D :wink:
drsnoop - Do 15.01.04 00:38
hat sich erledigt... habe nochma alles durchgeschaut und bemerkt, dass ich 'dezimalzahl' vor der schleife nicht auf 0 gesetzt habe, sie aber vorher in einer anderen aufgabe benutzt...
so blöd muss man erst ma sein.... :wink:
danke für eure hilfe!!!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!