Ada mod 和 rem 实现

标签 ada modulus

当仔细研究 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/

相关文章:

directory - 你如何从 Ada95 的文件夹中获取扩展名的文件?

c - C中如何高效验证pow(a, b) % b == a (无溢出)

algorithm - 找不到数字校验算法

c++ - 计算大数的模数

windows - 如何在 Windows 计算机上安装 GNAT (GNU Ada)?

ada - 处理长时间运行、阻塞的函数

terminal - Ubuntu 19.10下Ada 2012的NCurses构建环境

c - 为什么模运算符不扩展到除整数类型之外的其他数据类型?

C++ 在方程式中使用变量;错误 : expression must have integral or unscoped enum type & others

c++ - Ada 记录/C++ 结构类型的 Python 对应物是什么?