需要帮助理解模运算符
Need help understanding modulus operator
我理解模returns余数,我倾向于这样看:
13 % 5 = 3, 5 进入 13 两次,剩下 3
可是怎么会
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
5 进 1 一次,0 左边在右边?
只是想看看我应该如何看待这个以获得理解,谢谢
取模运算符returns除法后的余数
例如,
int i = 13 % 5;
会将 i 设置为 3。
1%5的余数是指1(不是5)除以5后的余数。5进1零次。所以——当你从 1 中删除 0 个 5 的倍数时,所有的 1 都会保留下来。因此 1 % 5 = 1.
从Euclidian division,我们知道对于每两个整数a
和b
(b!=0
),存在唯一的整数q
和r
这样 a = b * q + r
和 0 <= r < |b|
.
现在,%
,modulo operator,returns r
。对于您的示例:
1 % 5: 1 = 5 * 0 + 1 => r = 1
2 % 5: 2 = 5 * 0 + 1 => r = 2
13 % 5: 13 = 5 * 2 + 3 => r = 3
好问题!
以下是 %(模数)运算符的一些有趣事实:
余数运算符可用于获取任何数字的最后一位(取决于您使用的数字系统);像 dividend % 10 会给你十进制数系统的最后一位。
在java中,它可以用于任何数字数据类型(如byte、short、int、long、float和double)。
它适用于两个(正数和负数)数字。而负数的结果由被除数的符号决定;意味着如果股息为正,结果将为正,如果股息为负,结果也将为负。像 20 % (-3) = 2 但 -20 % (-3) = -2(股息 -20 为负)。
你的问题的答案和有趣的事实(摘自下面的link):
二进制数值提升后的整数操作数的余数运算产生的结果值使得 (a/b)*b+(a%b) 等于 a.
即使在被除数是其类型的最大可能负整数且除数为 -1(余数为 0)的特殊情况下,此恒等式也成立。
从这个规律可以看出,只有被除数为负,余数运算的结果才能为负,只有被除数为正,才能为正。而且,结果的大小总是小于除数的大小。
如果整数余数运算符的除数值为 0,则抛出 ArithmeticException。
看看 java 怎么说 https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.3
- 多用于循环数组和哈希表中,以包含限制中的元素。
我理解模returns余数,我倾向于这样看: 13 % 5 = 3, 5 进入 13 两次,剩下 3
可是怎么会
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
5 进 1 一次,0 左边在右边?
只是想看看我应该如何看待这个以获得理解,谢谢
取模运算符returns除法后的余数
例如,
int i = 13 % 5;
会将 i 设置为 3。
1%5的余数是指1(不是5)除以5后的余数。5进1零次。所以——当你从 1 中删除 0 个 5 的倍数时,所有的 1 都会保留下来。因此 1 % 5 = 1.
从Euclidian division,我们知道对于每两个整数a
和b
(b!=0
),存在唯一的整数q
和r
这样 a = b * q + r
和 0 <= r < |b|
.
现在,%
,modulo operator,returns r
。对于您的示例:
1 % 5: 1 = 5 * 0 + 1 => r = 1
2 % 5: 2 = 5 * 0 + 1 => r = 2
13 % 5: 13 = 5 * 2 + 3 => r = 3
好问题!
以下是 %(模数)运算符的一些有趣事实:
余数运算符可用于获取任何数字的最后一位(取决于您使用的数字系统);像 dividend % 10 会给你十进制数系统的最后一位。
在java中,它可以用于任何数字数据类型(如byte、short、int、long、float和double)。
它适用于两个(正数和负数)数字。而负数的结果由被除数的符号决定;意味着如果股息为正,结果将为正,如果股息为负,结果也将为负。像 20 % (-3) = 2 但 -20 % (-3) = -2(股息 -20 为负)。
你的问题的答案和有趣的事实(摘自下面的link):
二进制数值提升后的整数操作数的余数运算产生的结果值使得 (a/b)*b+(a%b) 等于 a.
即使在被除数是其类型的最大可能负整数且除数为 -1(余数为 0)的特殊情况下,此恒等式也成立。
从这个规律可以看出,只有被除数为负,余数运算的结果才能为负,只有被除数为正,才能为正。而且,结果的大小总是小于除数的大小。
如果整数余数运算符的除数值为 0,则抛出 ArithmeticException。
看看 java 怎么说 https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.3
- 多用于循环数组和哈希表中,以包含限制中的元素。