I finished the multiplier, the adder uses a bit simpler filter/detector logic but it's the same principle as before. The multiplier implements the above algorithm so it can compute any result with maximally 29 additions (each set bit in the first input causes an addition):
Them modifications in this save that make a multiplier from a divider were incompatible with the design for the adder I have, so I had to copy paste the design from this save with some modifications that I made.
You can't turn a multiplier into a divider by inverting inputs and outputs, you really have to implement binary long division. This is a more complex algorithm than binary multiplication because you have to do a trial subtraction and only use the result if it's posiitve or zero (see the algorithm in the link). Because you have to do 28 trial subtractions the divider will be slower than the multiplier. Then there is the problem that long division only works with positive divisors so you have to invert inputs and outputs if the divisor is negative.