Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

Convert.ToInt32 erzeugt Überlauf

  Alt 27. Sep 2005, 10:06
Hallo,
mit folgdender Methode möchte ich in einem Integer das Bit an der
Position BitPostion setzen.
Code:
private void SetBit(int BitPosition)
{
 int   BitPositionValue;
 double BitValue;
 // Berechne den Wert für die ODER-Verknüpfung
 BitValue = Math.Exp(BitPosition*Math.Log(2));
 //    BitPositionValue = Convert.ToInt32(BitValue); // <- Convert erzeugt Überlauf
 BitPositionValue = (int) (BitValue); // <- Funktioniert
 FBitValue = FBitValue | BitPositionValue;
}
Wenn ich jetzt für BitPosition den
Wert 31 übergebe soll der Bit 31 gesetzt werden.
Entspricht bei einem 32-Bit Integer -2.147.483.648.

Es passiert jedoch folgendes:

Convert.ToInt32 meldet eine Bereichsüberschreitung
Der einfache Typcast in einem Integer klappt reibungslos.

Evt. gibt es ja auch noch eine bessere Methode um ein Bits zu setzen.
I come from outer space to save the human race
  Mit Zitat antworten Zitat