AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wenn INT64 voll ist

Ein Thema von DerKapitalist · begonnen am 6. Jan 2003 · letzter Beitrag vom 2. Jun 2003
 
MatrixStormProgrammierer

Registriert seit: 26. Mai 2003
10 Beiträge
 
Delphi 6 Personal
 
#13

ja, es geht größer...

  Alt 30. Mai 2003, 11:34
Wie es auf dem PC so üblich geworden ist, kann man alles mögliche emulieren. Da nun unsere CPUs nun "nur" 32 Bit Register besitzen, ist theoretisch eine Berechnung in größeren Wertebereichen scheinbar unmöglich...

1.) Tatsache ist jedoch, das es Int64 (64 Bit groß) gibt...
Int64 wird teilweise emuliert und teilweise vom CPU unterstüzt,
indem z.B. der Assemblebefehl "mul" Produkte in eax und edx
aufteilt...

2.) Was ist nun wenn der Int64-Bereich zu Ende geht?
Naja, jede Rechenoperation ist ein Algorithmus (nicht umgekehrt!).
Es gibt also tatsächlich eine Möglichkeit größere Zahlen zu
verwenden. Ein einfaches Beispiel für eine 2048 Bit große Zahl
möchte ich kurz für den Befehl "inc" erläutern, bei weiteren Fragen
schreibt mir einfach per ICQ, 70036952.

Um alle Daten einer 2048 Bit (256 Byte) großen Zahl zu erfassen benötigen wir ein Feld aus Bytes... (ich empfehle Bytes, und nicht etwas größere Zahlentypen).

                 type mynumber = array[0..$ff] of byte; Ein Befehl inc für den Typ "mynumber" würde also z.B. so aussehen:
Delphi-Quellcode:
procedure inc(var num : mynumber;BytesSummand : byte); overload;
var
    i,
    zwischenerg : word; // besser, falls jemand größere Zahlen nimmt
begin
 zwischenerg:=word(ByteSummand);
 for i:=0 to sizeof(mynumber)-$1 do
  begin
   zwischenerg:=(zwischenerg and $ff) + num[i];
   num[i]:=zwischenerg and $ff;
   zwischenerg:=zwischenerg shr $8;
   if (zwischenerg = 0) then break; // kein Rest da...
  end;
end;
ps: hab das eben auf "die Schnelle" geschrieben, falls es nicht funzt, meldet euch bitte...

cu sagt MatrixStormProgrammierer...
Genial Menschen beginnen große Werke,
fleißige Menschen vollenden sie.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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