title: C# Language: Changing the First Four Bits in a Byte
body: <p>In order to utilize a byte to its fullest potential, I'm attempting to store two unique values into a byte: one in the first four bits and another in the second four bits.  However, I've found that, while this practice allows for optimized memory allocation, it makes changing the individual values stored in the byte difficult.  </p>
  
  <p>In my code, I want to change the first set of four bits in a byte while maintaining the value of the second four bits in the same byte.  While bitwise operations allow me to easily retrieve and manipulate the first four bit values, I'm finding it difficult to concatenate this new value with the second set of four bits in a byte.  The question is, how can I erase the first four bits from a byte (or, more accurately, set them all the zero) and add the new set of 4 bits to replace the four bits that were just erased, thus preserving the last 4 bits in a byte while changing the first four?</p>
  
  <p>Here's an example:</p>
  
  <pre><code>//  Changes the first four bits in a byte to the parameter value
  public void changeFirstFourBits(byte newFirstFour)
  {
      //  If 'newFirstFour' is 0101 in binary, make 'value' 01011111 in binary, changing
      //  the first four bits but leaving the second four alone.
  }
  
  private byte value = 255; // binary: 11111111
  </code></pre>