title: Multiplying two 32 bit numbers without using 64 bit int
body: <p>We are doing some 32bit * 32bit multiplication using the following algorithm</p>
  
  <p>Let us we want to multiply a (32 bit) with b (32 bit), both signed,</p>
  
  <p>a = ah * 2^16 + al [ah - Higher 16 bits, al - Lower 16 bits]</p>
  
  <p>b = bh * 2^16 + bl [bh - Higher 16 bits, bl - Lower 16 bits]</p>
  
  <p>We are effectively doing</p>
  
  <p>Result = (al * bl) + (((ah * bl) + (al * bh)) * 2^16) + ((ah * bh) * 2 ^ 32) ~~~</p>
  
  <hr>
  
  <p>My question,</p>
  
  <p>Is their any better way to do this?</p>