当仔细研究 mod 和 rem 之间的区别时(我承认几年前我就应该这样做,但我在这件事上发现很少。 https://en.wikipedia.org/wiki/Modulo_operation 指出可以使用一些不同的划分,并且还指出每个结果都有哪个符号。如果有任何关于 ARM 中执行哪个除法的声明,我一定错过了它。我认为它是欧几里得,但我想确定一下。
编辑:
所以我错过了这个:http://www.adaic.org/resources/add_content/standards/05rm/html/RM-4-5-5.html其中涵盖了关系。然而,在 mod 的关系中:
A = B*N + (A mod B)
唯一提及 N 的是“此外,对于某些有符号整数值 N”。 N从哪里来?
最佳答案
正如评论中所说,http://www.ada-auth.org/standards/12rm/html/RM-4-5-5.html很好地解释了行为上的根本差异。引用手册下面的表格很有帮助。我最终得出的结论(并针对各种分数类型实现)是 rem 使用截断除法,而 mod 使用地板除法。如果我显示错误,我会编辑这个答案。
关于Ada mod 和 rem 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42392327/