Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第一个数小于第二个数时的模数除法_Java_Modulo_Integer Division_Arithmetic Expressions - Fatal编程技术网

Java 第一个数小于第二个数时的模数除法

Java 第一个数小于第二个数时的模数除法,java,modulo,integer-division,arithmetic-expressions,Java,Modulo,Integer Division,Arithmetic Expressions,如果这是一个简单的问题,我很抱歉,但是当第一个数小于第二个数时,我很难理解模除的概念。例如,当1%4我的书上说余数是1。我不明白1怎么是1%4的剩余部分1/4等于0.25。我对模数除法的想法有误吗 如果将1除以4,则得到0,余数为1。这就是模的全部,除法后的余数。首先,在Java中,%是余数(不是模)运算符,它的语义稍有不同。 这就是说,你需要只考虑整数除法,就像没有分数一样。可以将其视为存储无法分割的项目:在总容量为1的存储中,可以存储0个大小为4的项目。存储最大项数后的剩余容量为1。同样,1

如果这是一个简单的问题,我很抱歉,但是当第一个数小于第二个数时,我很难理解模除的概念。例如,当1%4我的书上说余数是1。我不明白1怎么是1%4的剩余部分
1/4等于0.25。我对模数除法的想法有误吗

如果将1除以4,则得到0,余数为1。这就是模的全部,除法后的余数。

首先,在Java中,%是余数(不是模)运算符,它的语义稍有不同。
这就是说,你需要只考虑整数除法,就像没有分数一样。可以将其视为存储无法分割的项目:在总容量为1的存储中,可以存储0个大小为4的项目。存储最大项数后的剩余容量为1。同样,13%5等于3,因为您可以在大小为13的存储器中装入2个大小为5的完整项目,剩余容量为
13-2*5=3

另一种方式是将其视为您的数字的倍数表示。即,
a=n*b+r
,其中
b>r>=0
。从这个意义上讲,您的案例给出了
1=0*4+1
。(编辑:仅谈论正数)

我认为您对
%(余数)
/(除法)
运算符感到困惑

当你说
%
时,你需要一直除以红利,直到得到余数0或可能的结果。最后得到的是
余数


当你说
/
时,你将除数除以,直到除数变为1。你得到的最终产品叫做商,这是另一种很好的解决问题的方法, 在模数中,如果第一个数>第二个数,则从第一个数减去第二个数,直到第一个数小于第二个数

17 % 5 = ?
17 - 5 = 12
12 % 5 = ?
12 - 5 = 7
7 % 5 = ?
7 - 5 = 2
2 % 5  = 2
因此17%5,12%5,7%5都给出了2的答案。
这是因为2/5=0(在处理整数时)以2作为余数。

我将为“Jean-Bernard Pellerin”已经说过的内容添加一个更实际的例子

如果你把1除以4,你得到0是正确的,但是,为什么当你做1%4时,你会得到1作为结果

基本上是因为:

n = a / b (integer), and
m = a % b = a - ( b * n )
所以


结论:当a当第一个数字大于第二个数字时,我理解余数除法。我知道13%的5等于3。我不明白的是,当5%13时,答案会是什么。它也被称为模算子@拉维:这是不正确的,模数和余数之间存在差异(参见示例)。如果是负值,它会影响结果的符号是跟在被除数后面还是跟在除数后面。Javas%运算符实现了余数语义。@Ravi如果你肯定错了(如果你以Oracle为参考),请检查@misberner,humm,因此这不是一个正式术语。谢谢你的推荐。如果是40%,会发生什么160@yanivx同样,0还剩下40,所以答案是40“,而a a b n = a/b b * n m = a%b 1 4 0 0 1 2 4 0 0 2 3 4 0 0 3 4 4 1 0 0 5 4 1 4 1