我只是想知道,如果我想将 a 除以 b,并且对结果 c 和余数都感兴趣(例如,假设我有秒数并想将其分成分钟和秒),那么最好的方法是什么去做吧?
可不可能是
int c = (int)a / b;
int d = a % b;
or
int c = (int)a / b;
int d = a - b * c;
or
double tmp = a / b;
int c = (int)tmp;
int d = (int)(0.5+(tmp-c)*b);
or
也许有一种神奇的功能可以同时提供两者?
在 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. */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)