math with bitwise operators objective

write a program that can perform addition, subtraction, multiplication, and division, using only bit-wise operators, by bit-wise operators i mean the equivalent of JavaScript &amp;, |, ^, ~, &lt;&lt; ,&gt;&gt; ,&gt;&gt;&gt;. (AND, OR, XOR, NOT, and SHIFTs)

rules


you can use other operators, just not for the actual operation/output. (i.e. loop-indentation is ok).
it need not actually take input, just be technically functional. (i.e. functions that take arguments).
any output is OK, you can even return a object with the sum, difference, etc.
you need not return floats for division ints are ok as well, you can round anyway you like. 
as short as you can.
JavaScript, 124 119

a=(x,y)=&gt;y?a(x^y,(x&amp;y)&lt;&lt;1):x
s=(x,y)=&gt;a(x,a(1,~y))
m=(x,y)=&gt;x?a(y,m(s(x,1),y)):0
d=(x,y)=&gt;(x=s(x,y))&gt;&gt;31?0:a(1,d(x,y))


Addition and Subtraction work for any signed numbers, multiplication and division only for unsigned (this hasn't been specified).

The input is assumed to be 32 bit.

I've been very strict and not even used comparison operators, except testing for equality with zero. It could probably be written a bit shorter otherwise.