ttp://www.emit.jp/prog/prog_div.html
の高速除算なのですが、
どうしてこれで正しく計算できるのか分かる方いませんか?

あと、割られる数が負数のときでも上手くいくような
つまり
X / D = Q (Qは整数)
のときに
-X / D = -Q
となるような高速除算の方法を知っている方はいますか?