title: 2.9999999999999999 >> .5?
body: <p>I heard that you could right-shift a number by .5 instead of using Math.floor(). I decided to check its limits to make sure that it was a suitable replacement, so I checked the following values and got the following results in Google Chrome:</p>
  
  <pre><code>
  2.5 >> .5 == 2;
  2.9999 >> .5 == 2;
  2.999999999999999 >> .5 == 2;  // 15 9s
  2.9999999999999999 >> .5 == 3;  // 16 9s
  </code></pre>
  
  <p>After some fiddling, I found out that the highest possible value of two which, when right-shifted by .5, would yield 2 is 2.9999999999999997779553950749686919152736663818359374999999¯ (with the 9 repeating) in Chrome and Firefox. The number is  2.9999999999999997779¯ in IE.</p>
  
  <p>My question is: what is the significance of the number .0000000000000007779553950749686919152736663818359374? It's a very strange number and it really piqued my curiosity.</p>
  
  <p>I've been trying to find an answer or at least some kind of pattern, but I think my problem lies in the fact that I really don't understand the bitwise operation. I understand the idea in principle, but shifting a bit sequence by .5 doesn't make any sense at all to me. Any help is appreciated.</p>
  
  <p>For the record, the weird digit sequence changes with 2^x. The highest possible values of the following numbers that still truncate properly:</p>
  
  <pre>
  for 0: 0.9999999999999999444888487687421729788184165954589843749¯
  for 1: 1.9999999999999999888977697537484345957636833190917968749¯
  for 2-3: x+.99999999999999977795539507496869191527366638183593749¯
  for 4-7: x+.9999999999999995559107901499373838305473327636718749¯
  for 8-15: x+.999999999999999111821580299874767661094665527343749¯
  ...and so forth
  </pre>