[C#] Classe para manipulação de bits

Hoje vou compartilhar uma classe para manipulação de um byte, bit a bit.

public class CsManipulaBits
{
   /// <summary>
   /// CsManipulaBits dado = new CsManipulaBits(0xff);
   /// // usando
   /// dado.B0 = false;
   /// </summary>
   /// <param name="valorInicial"/>Valor inicial da variavel
   public CsManipulaBits(byte valorInicial)
   {
      Dado = valorInicial;
   }
   /// <summary>
   /// Seta valor
   /// </summary>
   public byte Dado { get; set; }
   /// <summary>
   /// Manipula bit0 do byte
   /// </summary>
   public bool B0
   {
      get
      {
         return GetBit(0);
      }
      set
      {
         if (value)
         {
            SetBit(0);
         }
         else
         {
            ResetBit(0);
         }
      }
   }
   /// <summary>
   /// Manipula bit1 do byte
   /// </summary>
   public bool B1
   {
      get
      {
         return GetBit(1);
      }
      set
      {
         if (value)
         {
            SetBit(1);
         }
         else
         {
            ResetBit(1);
         }
      }
   }
   /// <summary>
   /// Manipula bit2 do byte
   /// </summary>
   public bool B2
   {
      get
      {
         return GetBit(2);
      }
      set
      {
         if (value)
         {
            SetBit(2);
         }
         else
         {
            ResetBit(2);
         }
      }
   }
   /// <summary>
   /// Manipula bit3 do byte
   /// </summary>
   public bool B3
   {
      get
      {
         return GetBit(3);
      }
      set
      {
         if (value)
         {
            SetBit(3);
         }
         else
         {
            ResetBit(3);
         }
      }
   }
   /// <summary>
   /// Manipula bit4 do byte
   /// </summary>
   public bool B4
   {
      get
      {
         return GetBit(4);
      }
      set
      {
         if (value)
         {
            SetBit(4);
         }
         else
         {
            ResetBit(4);
         }
      }
   }
   /// <summary>
   /// Manipula bit5 do byte
   /// </summary>
   public bool B5
   {
      get
      {
         return GetBit(5);
      }
      set
      {
         if (value)
         {
            SetBit(5);
         }
         else
         {
            ResetBit(5);
         }
      }
   }
   /// <summary>
   /// Manipula bit6 do byte
   /// </summary>
   public bool B6
   {
      get
      {
         return GetBit(6);
      }
      set
      {
         if (value)
         {
            SetBit(6);
         }
         else
         {
            ResetBit(6);
         }
      }
   }
   /// <summary>
   /// Manipula bit7 do byte
   /// </summary>
   public bool B7
   {
      get
      {
         return GetBit(7);
      }
      set
      {
         if (value)
         {
            SetBit(7);
         }
         else
         {
            ResetBit(7);
         }
      }
   }
 
   private void SetBit(byte Pos)
   {
      if (Pos > 7)
      {
         throw new ArgumentException("Valor Inválido");
      }
      else
      {
         Dado |= (byte)(1 < < Pos);
      }
   }
 
   private void ResetBit(byte Pos)
   {
      if (Pos > 7)
      {
         throw new ArgumentException("Valor Inválido");
      }
      else
      {
         Dado &= (byte)(~(1 < < Pos));
      }
   }
 
   private bool GetBit(byte Pos)
   {
      if (Pos > 7)
      {
         throw new ArgumentException("Valor Inválido");
      }
      else
      {
         return (Dado & (1 < < Pos)) == (1 << Pos);
      }
   }   
}
[C#] Classe para manipulação de bits
Tags:                         

Deixe uma resposta

%d blogueiros gostam disto: