title: converting datatype while calculating hashCode
body: <p>While calculating hashcode for an object if we have an attribute whose type is long then we can convert it to int by below methods:</p>
  
  <pre><code> 1. int k = (int) (l);
   2. int k = (int)(l^(l&gt;&gt;&gt;32));
  ( l is an attribute of the object whose datatype is long)
  </code></pre>
  
  <p>It is advisable (Joshua bloch in Effective Java)to use 2nd method. what's the reason behind this? My thought i have produced below, please provide your input whether my assertion is correct or not? </p>
  
  <p>You can add to it if you have something else. Thanks.</p>