Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: SetBit-Funktion verbessern?

  Alt 11. Jul 2004, 08:27
Thx. TBitIndex hatte ich von 1 bis 64 definiert um mit Int64 noch arbeiten zu können wobei mir dann aufgefallen ist das es schwachsinn ist da meine funktion ja nur mit Integern arbeitet.
Wenn ich mir von Hagen
Delphi-Quellcode:
function BitSet(Value: Cardinal; State: Boolean; Index: Cardinal): Cardinal;
begin
  if State then Result := Value or (1 shl Index)
    else Result := Value and not (1 shl Index);
end;
anschaue ist das ja so ziemlich das gleiche wie in meinem Post nur das bei diesem Beispiel bei Bit 0 angefangen wird und bei mir war
Delphi-Quellcode:
type
  TBitIndex = 1..8; //bzw. dann 1..64
Naja, ok, dann fang ich bei Index 0 an um die eine Rechenoperation zu sparen. Wäre es nicht effektiver wenn man "Index" vom Type Byte defniert da er dann nicht mit überträgen etc. rumrechnen muss und nen Byte geht ja eher in ein Register als ein Cardinal oder nicht? Und 255 Bitshiftpositionen dürften ja auch reichen

welche der folgenden 3 Varianten wäre eigentlich die effektivste im Zusamenhang mit der Funktion (eventuell mit Begründung)
Delphi-Quellcode:
  TBitIndex = Byte; //Variante1
  TBitIndex = 0..7; //Variante2
  TBitIndex = Cardinal; //Variante3
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat