C# Modify a byte by bit

Date: 2016-03-19
using System;
using System.Collections.Generic;
using System.Text;

public class BitState
{
    public BitState()
    {
        
    }

    public BitState(byte aValue)
    {
        Value = aValue;
    }

    public byte Value = 0;

    public void AddBit(int bitNumber)
    {
        // Binary or
        Value = (byte)(Value | GetBit(bitNumber));
    }

    public bool HasBit(int bitNumber)
    {
        // Binary and
        return (Value & GetBit(bitNumber)) == GetBit(bitNumber);
    }

    public byte GetBit(int bitNumber)
    {
        // Shift left
        return (byte)(1 << bitNumber);
    }

    public void ToggleBit(int bitNumber)
    {
        // Binary xor
        Value = (byte)(Value ^ GetBit(bitNumber));
    }

    public void RemoveBit(int bitNumber)
    {
        // Get bit to remove => invert => apply AND			
        Value = (byte)(Value & ~GetBit(bitNumber));
    }

    public void InvertBits()
    {
        Value = unchecked((byte)~Value);
    }

    public void Clear()
    {
        Value = 0;
    }

    public void SetAll()
    {
        Value = 255;
        //Value = 0;
        //InvertBits();
    }

    public override string ToString()
    {
        return Convert.ToString(this.Value, 2).PadLeft(8, '0');
    }

    public bool[] AsBoolArray()
    {
        int sizeInBits = 8;
        bool[] boolArray = new bool[sizeInBits];
        for (int i = 0; i < sizeInBits; i++)
            boolArray[i] = HasBit(i);
        return boolArray;
    }
}
1300cookie-checkC# Modify a byte by bit