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.