为什么模数定义为编程语言中的模式

Ted*_*ool 5 language-agnostic math language-design modulus

我不是在询问定义,而是为什么语言创建者选择在C++中定义具有不对称行为的模数.(我认为Java也是)

假设我想找到大于或等于n的最小数,它可以被f整除.

如果n是正数,那么我做:

if(n % f)
   ans = n + f - n % f;
Run Code Online (Sandbox Code Playgroud)

如果n为负数:

ans = n - n % f;
Run Code Online (Sandbox Code Playgroud)

显然,在处理负数和正数时,这个定义并不是最有利的.那为什么这样定义呢?在什么情况下会产生权宜之计?

pau*_*sm4 1

因为它使用“模 2 算术”,其中每个二进制数字都是独立处理的。看看这里关于“除法”的例子