![]() |
Brauche asm-Hilfe
hi leute!
ich versuch grad, 'nen Binärzähler zu proggen, der so schnell wie möglich ist... (in einer Konsolenanwendung) Ich bin so weit gekommen:
Delphi-Quellcode:
Es geht relativ schnell, nur immer noch zu langsam, und da hab ich mir gedacht, könnte man einen Teil in assembler umwandeln. Kennt sich da jemand aus und kann/möchte mir Helfen?
program Project2;
{$APPTYPE CONSOLE} uses SysUtils; var a, b: string; bytes, i: integer; begin a := ''; b := ''; readln(bytes); for i := 1 to bytes do begin a := a + '0'; b := b + '1'; end; //Ab hier wird die Zeit gestoppt writeln(a); while a <> b do begin i := bytes; while a[i] = '1' do begin a[i] := 0; dec(i); end; a[i] := '1': end; //Hier wird die Zeitmessung beenden end. |
Re: Brauche asm-Hilfe
Zitat:
Das "writeln(a);" brauch im Vergleich zum Algorithmus sehr sehr lange. Zitat:
|
Re: Brauche asm-Hilfe
hab das writeln vergessen
nach a[i] := '1'; kommt writeln(a); :oops: |
Re: Brauche asm-Hilfe
Zitat:
|
Re: Brauche asm-Hilfe
Wie groß sollen die binärzahlen eigentlich sein ? Ich frage weil es eigentlich idiotisch ist auf einem Binären Rechner, sprich dem Computer, mit Strings statt mit Integern zu arbeiten. Ein Integer/Cardinal/Int64 ist nichts anderes wie eine Binärzahl. Also einfach den Binären String in einen Int64 umgewandelt und dann damit gerechnet. Zur Ausgabe wieder in einen Binären String umwandeln.
Delphi-Quellcode:
Gruß Hagen
function BINToInt(const Value: String): Int64;
begin Result := 0; for I := Length(Value) downto 1 do Inc(Result, Result + Ord(Value[I]) - Ord('0')); end; function IntToBIN(Value: Int64): String; begin Result := StringOfChar('0', 63); I := 0; while Value <> 0 do begin if Odd(Value) then Result[I] := '1'; Value := Value shr 1; Inc(I); end; end; |
Re: Brauche asm-Hilfe
er sollte am ende so groß sein können, wie nur möglich, und von einer bestimmten ausgangszahl bis zu einer bestimmten zahl zählen können! (sprich auch größer als 64 bit...)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz