需要帮助理解模运算符

问题描述 投票:0回答:4

我知道模数会返回余数,我倾向于这样看:13%5 = 3,5两次进入13,剩下3次

但是怎么来

1 % 5 = 1
2 % 5 = 2
3 % 5 = 3

5变成1一次,右边还有0?

只是想看看我应该如何看待以获得理解,谢谢

math modulus
4个回答
1
投票

1%5中的余数是指除以5后剩下的1(不是5)的余数。5变成1零次。因此-当您从1删除5的0的倍数时,所有1仍然保留。因此1%5 = 1。

Refer to this for a even better understanding


0
投票

模运算符返回除法后的余数。

例如,

int i = 13 % 5;

将i设置为3。


0
投票

[从Euclidian division,我们知道对于每两个整数abb!=0),存在唯一的整数qr,使得a = b * q + r0 <= r < |b|

现在,%,即modulo operator,返回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 

0
投票

好问题!

以下是%(模)运算符的一些有趣的事实:

  • 余数运算符可用于获取任何数字的最后一位(基于您使用的数字系统);像股息%10会给您十进制数字系统的最后一位数字。

  • 在Java中,它可以与任何数字数据类型(例如字节,短,整数,长,浮点和双精度)一起使用。

  • 它同时适用于(正数和负数)数字。负数的结果由分红的符号决定;表示如果股息为正,则结果将为正;如果股息为负,则结果也将为负。就像20%(-3)= 2但-20%(-3)= -2(股息-20为负)。

您的问题和有趣的事实的答案(摘自下面的链接):

  • 二进制数字提升后为整数的操作数的余数运算会产生结果值,使得(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

  • 通常在循环数组和哈希表中使用,以限制包含元素。
© www.soinside.com 2019 - 2024. All rights reserved.