Feedback

C# - Prüfung, ob bestimmtes Bit in Byte gesetzt ist.

Veröffentlicht von am 20.05.2011
(0 Bewertungen)
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.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

        /// <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)");
            }

        }
Abgelegt unter Byte, Bit, Prüfen.

4 Kommentare zum Snippet

Pirmin schrieb am 20.05.2011:
Ich würde bei der Fehlerbehandlung auch auf mögliche negative Zahlen testen.
spezi schrieb am 21.05.2011:
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)"
);
}
}
Martin Dauskardt schrieb am 24.05.2011:
Sieht durchaus eleganter aus :-)
Martin Dauskardt schrieb am 24.05.2011:
Habe es im Snippet entsprechend angepasst.
 

Logge dich ein, um hier zu kommentieren!