0

nビットの2進整数を分割する方法の疑似コードを作成するのを誰かが手伝ってくれるかどうか疑問に思っていました. 私が間違っている場合、誰かがこれを修正できますか?

divide (x,y)
     if x=0: return (0,0) //(quotient, remainder)
     (q,r) = divide(floor(x/2), y)

     q=2q, r=2r
     if x is odd: r = r+1

     if r >= y: r = r-y, q = q+1
          return (q,r)

この一般的な疑似コード アルゴリズムは、n ビットの数値を除算するという意図したタスクを達成できると思いますか?それとも、間違ったコードを書き始める前に、疑似コードに何かが欠けているのでしょうか?

4

1 に答える 1

1

明らかなもの(ゼロによる除算をチェックしない、負の数を処理しない)以外は、機能しているようです。これを 10 進数に適用するだけで納得しました。

于 2012-09-19T03:35:43.527 に答える