Thema: Delphi IsPowerOfTwo

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.054 Beiträge
 
Delphi 12 Athens
 
#8

Re: IsPowerOfTwo

  Alt 7. Mai 2009, 10:39
Zitat von 3_of_8:
Funktioniert aber so nicht bei negativen Zahlen - da müsste man ein i>0 reintun.
ist klar, da durch die Dastellung oben alles 1 und unten alle Bits 0 sein müßten (siehe Aufbau des Zweierkomplements)

mit aktiver Bereichsprüfung
Delphi-Quellcode:
Function IsPowerOfTwo(i: Integer): Boolean;
  Begin
    Result := (i = Low(Integer))
      or (i > 0) and (i and Pred(i) = 0)
      or (i < 0) and (-i and Pred(-i) = 0);
  End;
ohne Bereichsprüfung
Delphi-Quellcode:
Function IsPowerOfTwo(i: Integer): Boolean;
  Begin
    Result := (i > 0) and (i and Pred(i) = 0)
      or (i < 0) and (-i and Pred(-i) = 0);
  End;
[edit]
Überlaufprüfung beachtet
oder man schaltet die Prüfung in der Funktion geziehlt um
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat