title: Bitwise shift operation in C on uint64_t variable
body: <p>I have the following sample code:</p>
  
  <pre><code>uint64_t x, y;
  x = ~(0xF&lt;&lt;24);
  y = ~(0xFF&lt;&lt;24);
  </code></pre>
  
  <p>The result would be:</p>
  
  <pre><code>x=0xfffffffff0ffffff
  y=0xfffff
  </code></pre>
  
  <p>Can anyone explain the difference? Why x is calculated over 64 bit and y only on 32?</p>