You would do binary long division. You need to use unsigned numbers since you can't 2's complement an arbitrarily large number... just follow the usual rules for negatives (i.e. -/- = +, +/+ = +, -/+ = -, +/- = -) once you do the unsigned version.
Wikipedia:
Integer division (unsigned) with remainderThe following algorithm, the binary version of the famous long division, will divide N by D, placing the quotient in Q and the remainder in R. All values are treated as unsigned integers.[citation needed]]]
if D == 0 then throw DivisionByZeroException end
Q := 0 initialize quotient and remainder to zero
R := 0
for i = n-1...0 do where n is number of bits
R := R << 1 left-shift R by 1 bit
R(0) := N(i) set the least-significant bit of R equal to bit i of the numerator
if R >= D then
R = R - D
Q(i) := 1
end
end
You can do binary long multiplication for multiplying as well... although there are better algorithms for very large numbers of bits.
"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley