title: Using bitwise operators to add/subtract multiples of 2
body: <p>I noticed that the difference between lower and uppercase is <code>32</code>.  This seems like a perfect opportunity to utilize some clever bit manipulation.  The problem is that it's been a long time since my Computer Architecture classes, and I'm a bit rusty with the concepts required.  From what I do recall, depending on the CPU architecture and language representation of signed/unsigned there are a very small number of solutions that would apply to almost all programming languages with these operators.  I'm interested in comparing these.  I'm not interested in simply converting the case, I know there are "simpler" ways (for humans, at least).  I'm interested in learning about how this problem interacts with the low-level representation of the data.</p>
  
  <p>Please provide workable, minimal solutions for both lowercase->upper and uppercase->lower, for each common representation, as well as a reasonably detailed explanation of how they work.</p>