title: Why does 0x8FFFFFF equal 128MB?
body: <p>I sometimes see code like this:</p>
  
  <pre><code>int length = 0x8FFFFFF; //128MB
  byte buf = new byte[length];
  </code></pre>
  
  <p>It does not make much sense to me as:</p>
  
  <p>0x8FFFFFF = 150,994,943<br>
  128MB = 128 * 1024 * 1024 byte = 134,217,728 byte</p>
  
  <p>These two number does not equal. What am I missing here?</p>
  
  <p>Thanks,</p>