Implement multiplication by a constant with addition and bit shifts
Python - 414 393 331

This is my entry, which finds the least possible addition/subtraction operations, and subsequently evaluates to a C expression. Not sure it is optimal as multiplication of subexpressions may offer less operations.  

import itertools as l
def w(N,s=''):
 for k,v in enumerate(min([t for t in l.product((1,0,-1),repeat=len(bin(N))-1)if sum([v*2**k for k,v in enumerate(t)])==N],key=lambda t:sum(abs(k)for k in t))):
  if v!=0:s+='{:+d}'.format(v)[0];s+='((x)&lt;&lt;{})'.format(k)if k&gt;0 else'(x)'
 return '#define XYZZY{}(x) ({})'.format(N,s.lstrip('+'))


For the cases 2, 10, 100, 14043, 65535:

#define XYZZY2 (((x)&lt;&lt;1))
#define XYZZY10 (((x)&lt;&lt;1)+((x)&lt;&lt;3))
#define XYZZY100 (((x)&lt;&lt;2)+((x)&lt;&lt;5)+((x)&lt;&lt;6))
#define XYZZY14043 (-(x)-((x)&lt;&lt;2)-((x)&lt;&lt;5)-((x)&lt;&lt;8)-((x)&lt;&lt;11)+((x)&lt;&lt;14))
#define XYZZY65535(x) (-(x)+((x)&lt;&lt;16))


The final 65535 took around 11 minutes to compute. Suggestions for improvement (also speedwise) are welcome :-). Thanks to mbomb007 and plg for golfing improvements.