Thema: Delphi IsPowerOfTwo

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: IsPowerOfTwo

  Alt 7. Mai 2009, 15:37
2: das > war 'nen Copy&Paster-Fehlerchen und sollte ein <> sein

1: Abs(MinInt) = MaxInt+1 , also außerhalb des Wertebereichs, da der negative Bereich um 1 größer ist, also der Positive, weil die 0 im positiven Bit-Satz enthalten ist.

Delphi-Quellcode:
// ohne Rangeprobleme, da der Sonderfall von MinInt abgefangen wird
Result := (i = Low(Integer))
  or (i > 0) and (i and Pred(i) = 0)
  or (i < 0) and (-i and Pred(-i) = 0);

// mit Rangeproblem
Result := (i > 0) and (i and Pred(i) = 0)
  or (i < 0) and (-i and Pred(-i) = 0);

// mit Rangeproblem - verkürzt
Result := (i <> 0) and (i and Pred(Abs(i)) = 0);
$2B or not $2B
  Mit Zitat antworten Zitat