title: Bit parity code for odd number of bits
body: <p>I am trying to find the parity of a bitstring so that it returns 1 if x has an odd # of 0's.<br>
  I can only use basic bitwise operations and what I have so far passes most of the tests, but I'm wondering 2 things:</p>
  
  <ol>
  <li><p>Why does x ^ (x + ~1) work?  I stumbled upon this, but it seems to give you 1 if there are an odd number of bits and something else if even.  Like 7^6 = 1 because 7 = 0b0111</p></li>
  <li><p>Is this the right direction of problem solving for this?  I'm assuming my problem is stemming from the first operation, specifically (x + ~1) because it would overflow certain 2's complement numbers. Thanks</p></li>
  </ol>
  
  <p>Code:</p>
  
  <pre><code>int bitParity(int x) {
      int first = x ^ (x + ~1);
      int second = first ^ 1; // if first XOR gave 1 you'll return 0 here
      int result = !!second;
  return result;
  }
  </code></pre>