title: Findbugs warning: Integer shift by 32 -- what does it mean?
body: <p>I was scanning a third party source code using Findbugs (just to be cautious before integrating into it mine), and found the following warning:</p>
  
  <pre><code>long a = b &lt;&lt; 32 | c
  </code></pre>
  
  <blockquote>
    <p>Bug: Integer shift by 32 Pattern id:
    ICAST_BAD_SHIFT_AMOUNT, type: BSHIFT,
    category: CORRECTNESS</p>
    
    <p>The code performs an integer shift by
    a constant amount outside the range
    0..31. The effect of this is to use the lower 5 bits of the integer value
    to decide how much to shift by. This
    probably isn't want was expected, and
    it at least confusing.</p>
  </blockquote>
  
  <p>Could anyone please explain what exactly does the above mean?</p>
  
  <p>Thanks!
  (I am quite a newbie in Java programming)</p>