Einzelnen Beitrag anzeigen

Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: möchte modulo (Teilen) function neu programmieren

  Alt 8. Jan 2005, 18:00
Zitat von Coder:
oder gibt es evtl source zu so einer Funktion?
den gibt mit sicherheit irgendwo, aber wozu, wenn man schonmal im binärsystem dividieren musste (wenn schon für nix anderes ist informatikunterricht zumindest dafür gut ), ist es eigentlich recht einfach, eine mod funktion (bzw. div, da beides in einem rutsch berechnet wird) nachzuprogrammieren.

Dazu muss man lediglich wissen, dass im binärsystem ausgehend vom höchstwertigsten bit des dividenten, die zahl der der abzufragenden bits immer weiter erhöhend, auf den wert des divisors überprüft wird, sollte dieser erreicht oder überschritten sein wird er abgezogen und es wird weitergerechnet. das könnte z.B. so aussehen:
Delphi-Quellcode:
procedure _shld(var Dest,Source: Cardinal);
begin
  Dest := Dest shl 1;
  Dest := Dest or Byte( (Source and $80000000) > 0 );
  Source := Source shl 1;
end;

function _Mod(Dividend,Divisor: Cardinal): Cardinal;
var Count: Byte;
begin
  Result := 0;
  Count := 32; // 31 bits, also 31 mal schieben
  repeat
    _shld(Result,Dividend); // schiebe nächstes bit in result
    if Result >= Divisor then // s.o., bedingung erfüllt?
      Result := Result - Divisor; // falls ja, divisor abziehen
    Dec(Count);
  until Count = 0;
end;
und @Aenogym:
klar, wozu das rad neuerfinden, aber wenn man verstehen will was im rechner passiert wenn man (X mod Y) irgendwo hinschreibt isses manchma unabdinglich
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat