只用加减或移位实现乘法解决办法

只用加减或移位实现乘法
比如 int   a=13   int   b=10
如何做的 移位只能乘以2^n的数  
如何将b要分解成的两个2^n的数


------解决方案--------------------
a*3 => (a < < 1) + a
a*7 => (a < < 2) + (a < < 1) + a
是2进制,不是两个2^n