AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein möchte modulo (Teilen) function neu programmieren
Thema durchsuchen
Ansicht
Themen-Optionen

möchte modulo (Teilen) function neu programmieren

Ein Thema von Coder · begonnen am 8. Jan 2005 · letzter Beitrag vom 8. Jan 2005
Antwort Antwort
Benutzerbild von Nothine
Nothine

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

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
Antwort Antwort


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 03:45 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