关于求余和取模的区别以及负数取摸

一、先说一说求余和取模的区别。

  一般情况下,大家都把求余和求模混为一谈。其实不然,求余和取模是有区别的。 

a%b
  简单来说,求余的结果应该与a的符号保持一致;

  而取模的结果应该与b的符号保持一致。

 

求余
取模
5%211
-5%21-1
5%-2-11
-5%-2-1-1


二、负数取模(求余)

仍一a%b为例(b>=0)

  在许多的编译器中,都是进行的求余运算。VC,CB中都是。

  而在某些情况下,我们是需要求模的结果的。不过那也是很是简单的。

((a%b)+b)%b;

今天做题的时候就是遇到了一道关于求余和取模的题目。还好,不是卡在了这里。不过,由于自己的粗心,Wa的快哭了。最后才看到一个bug。

### 负数运算规则 在编程中,负数运算是指当被除数或除数为负数时如何计算数。不同的编程语言可能有不同的定义和实现方式。通常情况下,的结果决于整数除法的行为。 对于大多数现代编程语言(如 C、C++ 和 Python),操作遵循 **“向下整”** 的原则[^1]。这意味着: - 当两个数相除时,商会被截断到最接近零的方向。 - 结果的符号由被除数决定。 具体来说,在表达式 `-a % b` 中: - 如果 `b > 0`,则结果始终是非正数。 - 如果 `b < 0`,则结果始终是非负数。 以下是几种常见编程语言中的行为描述: #### Python 实现 Python 使用的是欧几里得算法来处理运算,其特点是无论输入是什么,结果总是非负数。公式如下: \[ r = a - \left\lfloor \frac{a}{n} \right\rfloor * n \] 其中 \(r\) 是最终的数值,\(a\) 是被除数,\(n\) 是除数。 ```python print(-7 % 3) # 输出:2 ``` 上述例子表明即使存在负号,Python 返回了一个正值作为结果。 #### C/C++ 实现 相比之下,C 或者 C++ 遵循另一种逻辑——它们会保留原始数学意义上的符号关系。因此如果有一个负的操作数参与进来的话,那么得到的答案也可能是负值。 ```c #include<stdio.h> int main(){ printf("%d\n", (-7)%3); // 输出:-1 } ``` 这里展示了同样的案例但在不同环境下产生的差异性输出。 ### 编程解决方案 为了确保跨平台一致性以及满足特定需下的应用开发场景下的一致表现形式,可以手动调整标准库函数或者编写自定义版本来进行统一化管理。下面给出一段通用伪代码用于演示目的: ```pseudo function mod(a, n): return (a % n + n) % n; end function ``` 此方法能够有效消除因底层机制带来的不确定性影响因素的同时保持良好的可移植性和兼容度水平[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值