Sprache: C#
Eine einfache Methode zur Überprüfung einzelner Bits in einem Byte. Als Parameter werden ein Byte (0x5A) und eine Bitnummer (0-7) übergeben. Returnwert ist ein boolean (true wenn Bit gesetzt ist, sonst false). Die Fehlerbehandlung ist nur auf das Notwendigste beschränkt.
/// <summary>
/// Prüft, ob ein angegebenes Bit im Byte gesetzt ist.
/// </summary>
/// <param name="b">Byte, welches getestet werden soll.</param>
/// <param name="BitNumber">Das zu prüfende Bit (0 bis 7).</param>
/// <returns>gesetzt=true, nicht gesetzt=false</returns>
public static bool CheckBitSet(byte b, int BitNumber)
{
//Kleine Fehlerbehandlung
if (BitNumber < 8 && BitNumber > -1)
{
return (b & (1 << BitNumber)) > 0;
}
else
{
throw new InvalidOperationException(
"Der Wert für BitNumber " + BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
}
}
/// <summary>
/// Prüft, ob ein angegebenes Bit im Byte gesetzt ist.
/// </summary>
/// <param name="b">Byte, welches getestet werden soll.</param>
/// <param name="BitNumber">Das zu prüfende Bit (0 bis 7).</param>
/// <returns>gesetzt=true, nicht gesetzt=false</returns>
public static bool CheckBitSet(byte b, int BitNumber)
{
//Kleine Fehlerbehandlung
if (BitNumber < 8 && BitNumber > -1)
{
return (b & (1 << BitNumber)) > 0;
}
else
{
throw new InvalidOperationException(
"Der Wert für BitNumber " + BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
}
}
Alte URL:
/snippet/pruefung-ob-bestimmtes-bit-in-byte-gesetzt-ist/1541
Ich würde bei der Fehlerbehandlung auch auf mögliche negative Zahlen testen.
geht auch kürzer:
public static bool CheckBitSet(byte b, byte BitNumber)
{
if (BitNumber < 8) { return (b & (1 << BitNumber)) > 0;
}
else
{
throw new InvalidOperationException(
„Der Wert für BitNumber (byte) war zu gross! (BitNumber = (min)0 – (max)7)“
);
}
}
Sieht durchaus eleganter aus 🙂
Habe es im Snippet entsprechend angepasst.