title: Odd enum values in Windows.Forms.MouseButtons
body: <p>I found this gem (IMO) in <code>System.Windows.Forms</code> namespace. I'm struggling to figure out why is it set like this.</p>
  
  <pre><code>[Flags]
  public enum MouseButtons
  {
      None = 0,
      Left = 1048576,
      Right = 2097152,
      Middle = 4194304,
      XButton1 = 8388608,
      XButton2 = 16777216,
  }
  </code></pre>
  
  <p>Can somebody explain why it uses these values (power of <code>2^20</code> to <code>2^24</code>) instead of this:</p>
  
  <pre><code>public enum MouseButtons
  {
      None = 0,
      Left = 1,      // 2^0
      Right = 2,     // 2^1
      Middle = 4,    // 2^2
      XButton1 = 8,  // 2^3
      XButton2 = 16, // 2^4
  }
  </code></pre>
  
  <p>The first value is <code>100000000000000000000</code> in binary, which leaves space for another 20 bits! Why do we need such space and why is it preserved like this?</p>