title: BITWISE AND(&) for Range of Numbers
body: <p>Given two numbers L &amp; R , Find Bitwise AND of all numbers lying between L and R inclusive </p>
  
  <p>Constraints <code>1&lt;= L,R &lt;= (2^32)</code>.</p>
  
  <pre><code>LL step = 1;
      while(L!=R)
      {
          L/=2; R/=2; step*=2;
      }
      cout&lt;&lt;L*step&lt;&lt;endl;
  </code></pre>
  
  <p>Can anybody help me with the explanation or logic behind the above code?</p>