title: shell bit shifting producing different numbers
body: <p>in my local machines bash when I run:</p>
  
  <pre><code>echo $((192 &lt;&lt; 24))
  3221225472
  </code></pre>
  
  <p>but on my embedded targets busy box SHELL I get something else:</p>
  
  <pre><code>echo $((192 &lt;&lt; 24))
  -1073741824
  </code></pre>
  
  <p>it works when I left shift by a smaller number though. The embedded device is 64bit, where my local host is 32 bit.</p>
  
  <p>Just to be clear, <strong>on the 32bit machine, the value is positive, on the 64 bit machine it's negative.</strong></p>
  
  <p>EDIT:
  This is on the embedded device which is <strong>64 bit machine with SHELL</strong>. It doesn't happen when left shifting by 23.</p>
  
  <pre><code>echo $((192 &lt;&lt; 23))
  1610612736
  echo $((192 &lt;&lt; 24))
  -1073741824
  </code></pre>
  
  <p>On the local host, which is a <strong>32 machine with BASH</strong>:</p>
  
  <pre><code>echo $((192 &lt;&lt; 55))
  6917529027641081856
  echo $((192 &lt;&lt; 56))
  -4611686018427387904
  </code></pre>