Here is the proof that for two-bit bitwise operations you cannot describe & with just + - and * (check this out, just come up with it now, so who knows):
The question is, is it possible to find a polynomial
x & y == P(x, y)
Where
P(x, y) = a0_0 + a1_0*x + a0_1*y + a2_0*x^ + ...
Here's what it would look like:
0 1 2 3 -------- 0| 0 0 0 0 1| 0 1 0 1 2| 0 0 2 2 3| 0 1 2 3
Firstly, a0_0 == 0 clear. Then you can see that if P rewritten:
|------- Q(x, y) --------| P(x, y) = xy*R(x,y) + a1_0*x + a0_1*y + ...
And y held at 0, and x changed to 0, 1, 2, 3; then Q (x, y) must be 0 for each of these values. Similarly, if x held at 0 and y changes. So Q(x, y) can be set to 0 without loss of generality.
But now, since P(2, 2) = 2 , but 2 * 2 == 0 , the polynomial P cannot exist.
And, I think, it will generalize and more bits.
So the answer is: if you are only looking for + , * and - , you cannot do it.