1. ホーム
  2. c++

[解決済み] C++ 整数の除算と剰余を得るための最良の方法

2022-10-09 13:23:44

質問

もし私がaをbで割りたいと思い、結果cと余りの両方に興味がある場合(例えば秒数があり、それを分と秒に分けたい)、どのようにするのがベストでしょうか?

それは

int c = (int)a / b;
int d = a % b;

または

int c = (int)a / b;
int d = a - b * c;

または

double tmp = a / b;
int c = (int)tmp;
int d = (int)(0.5+(tmp-c)*b);

または

両方を一度に得られる魔法の関数があるのでは?

どのように解決するのですか?

x86 では余りは除算の副産物なので、まともなコンパイラなら余りをそのまま使うことができるはずです(そして div を再度実行しない)。これはおそらく他のアーキテクチャでも行われていることでしょう。

命令です。 DIV src

注:符号なし除算。アキュムレータ(AX)を"src"で割ります。除算器がバイト値の場合 がバイトの場合、結果はALに格納されます。 に、余りはAH . 被除数 がワード値の場合、DX:AXは "src"で割られ、結果は をAXに格納します。 に格納され、余りはDX .

int c = (int)a / b;
int d = a % b; /* Likely uses the result of the division. */