Feedback

Setzt ein bestimmtes Bit in einem Byte

Sprache: C#

Setzt ein angegebenes Bit in einem übergebenen Byte. Als Parameter werden ein Byte (0x5A) und eine Bitnummer (0-7) übergeben. Returnwert ist ein Byte mit dem neuen Wert. Die Fehlerbehandlung ist nur auf das Notwendigste beschränkt.
        /// <summary>
        /// Setzt ein bestimmtes Bit in einem Byte.
        /// </summary>
        /// <param name="b">Byte, welches bearbeitet werden soll.</param>
        /// <param name="BitNumber">Das zu setzende Bit (0 bis 7).</param>
        /// <returns>Ergebnis - Byte</returns>
        public static byte SetBit(byte b, int BitNumber)
        {
            //Kleine Fehlerbehandlung
            if (BitNumber < 8 && BitNumber > -1)
            {
                return (byte)(b | (byte)(0x01 << BitNumber));
            }
            else
            {
                throw new InvalidOperationException(
                "Der Wert für BitNumber " +  BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
            }
        }
        /// <summary>
        /// Setzt ein bestimmtes Bit in einem Byte.
        /// </summary>
        /// <param name="b">Byte, welches bearbeitet werden soll.</param>
        /// <param name="BitNumber">Das zu setzende Bit (0 bis 7).</param>
        /// <returns>Ergebnis - Byte</returns>
        public static byte SetBit(byte b, int BitNumber)
        {
            //Kleine Fehlerbehandlung
            if (BitNumber < 8 && BitNumber > -1)
            {
                return (byte)(b | (byte)(0x01 << BitNumber));
            }
            else
            {
                throw new InvalidOperationException(
                "Der Wert für BitNumber " +  BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
            }
        }

1 Kommentar

  1. Ein kleiner Erweiterungsvorschlag (basierend auf dem .NET Delphi-Dialekt Oxygene von Remobjects):

    class method sup.SetzeBit(b: Byte; BitNumber: Integer; Zielzustand:Boolean): Byte;
    begin
    // Kleine Fehlerbehandlung
    if (BitNumber < 8) and (BitNumber > -1) then
    begin
    if Zielzustand then
    exit Byte(b or Byte(1 shl BitNumber))
    else
    exit Byte(b and not Byte(1 shl BitNumber))
    end
    else begin
    raise new InvalidOperationException(‚Der Wert für BitNumber ‚ + BitNumber.ToString() + ‚ war nicht im zulässigen Bereich! (BitNumber = (min)0 – (max)7)‘);
    end;
    end;

    Dies würde ermöglichen, Bits sowohl ein- als auch auszuschalten.