据我了解(请参阅具有负值的模运算符和模运算)C 和 C++ 有一个“余数”运算a % b
符,但当 LHS 为负数时没有实际执行模运算的运算符。
几种语言确实具有这样的功能。是否可以在 C/C++ 中构建一个高效的函数(或者在 i686/x64 CPU 上没有有效的方法)?
目前我使用(n * b + a) % b
where n
is pick 这样我就可以确定整个 LHS 是非负数,但不可避免地会更改代码并且有时会出现错误。
注意:如果不清楚,模算术是指一个运算符,a + b % b = a % b
对于所有整数a
和所有正整数b
。