取模计算器
取模(或称“mod“)运算返回整数除法后的余数:17 mod 5 = 2,因为 17 = 3·5 + 2。它是时钟算术、密码学、哈希函数以及 SQL 中“每隔第 N 行“模式的核心。本计算器接受整数或小数操作数,明确显示商与余数,并处理各语言之间符号约定的差异(负数时 Python 的 % ≠ C 的 %)。
如何计算 a mod b
-
1
输入被除数 (a) 与除数 (b)
任意数字均可;支持小数和负数。
-
2
选择符号约定
截断除法(C、Java、Go),向下取整除法(Python、Ruby、数学约定)。
-
3
读取商与余数
a = q·b + r,r 的符号由所选规则决定。
-
4
查看数学表达式
代入数值后,每一步都清晰可见。
负数的两种约定
对于正操作数,所有约定一致:17 mod 5 = 2。对于负数,各语言有所不同:
| 语言 | -17 mod 5 |
约定 |
|---|---|---|
| Python、Ruby | 3 | 向下取整 |
| C、Java、Go、JS | -2 | 截断 |
| 数学教科书 | 3 | 向下取整(通常) |
向下取整除法: 商向 −∞ 方向取整。余数始终与除数同号:与 b 同号。
截断除法: 商向零方向取整。余数与被除数同号:与 a 同号。
当 a = -17、b = 5 时:
- 截断: q = -3(向 0 取整),r = -17 − (-3)·5 = -2。
- 向下取整: q = -4(向 -∞ 取整),r = -17 − (-4)·5 = 3。
在各自的约定下两者都正确。请选择与你的语言相符的方式。
取模的应用场景
- 时间。 一小时中的分钟、一周中的天数、一天中的秒数,都是取模算术。
- 哈希表。
hash(key) mod table_size选择一个桶。 - 轮询调度。
task_i mod worker_count分配任务。 - 密码学。 RSA 和 Diffie-Hellman 建立在使用超大素数的 mod
n之上。 - 每隔第 N 行。 在 SQL 中:
WHERE id % 3 = 0。 - 奇偶校验。
n mod 2 == 0表示偶数。 - 交替图案。 行条纹,每隔一项着色。
- 环形缓冲区。
(index + 1) mod size会绕回起点。
有用的恒等式
(a + b) mod n = ((a mod n) + (b mod n)) mod n(a · b) mod n = ((a mod n) · (b mod n)) mod n(a^k) mod n可通过快速模幂在 O(log k) 时间内算出,对大数密码学至关重要。- 对任意整数 a,
a mod 1 = 0。 a mod a = 0。
小数取模
对于实数,自然定义为 a mod b = a − b · floor(a/b)。7.5 mod 2.5 = 0,因为 7.5 是精确倍数。7.6 mod 2.5 = 0.1。
JavaScript 的 % 运算符适用于实数;Python 的 fmod 执行截断式实数取模;Python 的 % 执行向下取整式实数取模。
计算示例
100 mod 7:100 = 14·7 + 2,因此余数为 2。25 mod 4:25 = 6·4 + 1,因此余数为 1。-10 mod 3(向下取整):-10 = -4·3 + 2,余数 2。(截断则得-1。)17.5 mod 5:17.5 = 3·5 + 2.5,余数 2.5。
常见问题
大多数情况下二者是同义词。正式而言,“modulo”通常指数学约定(向下取整),而“remainder“(余数)通常指截断变体(C 风格)。这些名称会渗入各语言的文档;当区别重要时,请明确注明所用约定。
Python 遵循数学约定(向下取整),使余数符号与除数一致;C 遵循硬件 ALU 约定(截断),使余数符号与被除数一致。两者都不算错,只是不同的选择。
不能,除以零没有定义。当 b = 0 时,计算器会返回错误。
通常相同。请查阅你所用语言关于负数处理的规范,Python 和 Ruby 与 C、Java、Go 和 JavaScript 不同。
对于使用 2048 位数字的 RSA 式运算,请使用专用库(Python 的 pow(a, b, n)、Java 的 BigInteger.modPow)。本计算器处理日常数值,而非密码学级别的数值。
相关工具
日出/日落计算器
利用纬度、经度及UTC偏移值,计算任意日期和地点的日出时间、日落时间、民用黄昏时间及白昼时长。
星座计算器
输入你的出生日期,找出你的西方太阳星座(含元素和星座符号)以及你的生肖动物及其对应的五行属性。
时间计算器:距离现在还有多久?
计算距离指定日期和时间(以天、小时、分钟和秒为单位)还需多久,并显示小时和分钟的总计。
上课天数计算器
统计两个日期之间的工作日(周一至周五),并按周末和每个星期几进行细分。适用于学期规划、作业安排和出勤管理。
eDPI 计算器
根据鼠标 DPI 和游戏内灵敏度计算有效 DPI。在同一款游戏内比较设置,了解不同的 DPI 与灵敏度组合为何能带来相近的手感。
二次回归计算器
将 y = ax² + bx + c 拟合到您的数据,计算系数、R²、均方根误差和残差,并可预测指定 x 对应的 y。
此工具还提供其他语言版本
- 剰余計算機 [JA]
- Modulokalkylator [SV]
- Calculateur de Modulo [FR]
- Modulo-Rechner [DE]
- เครื่องคำนวณโมดูโล (Modulo) [TH]
- Máy tính modulo [VI]
- Calculadora de Módulo [ES]
- Modulo-calculator [NL]
- Kalkulator modulo [PL]
- Kalkulator Modulo [ID]
- 모듈로 계산기 [KO]
- حاسبة باقي القسمة (Modulo) [AR]
- Calculadora de Módulo [PT]
- Modulo Calculator [EN]
- Калькулятор остатка от деления [RU]
- Modulo Hesaplayıcı [TR]
- Calcolatore Modulo [IT]