理解模运算符%
我用下面的expression式理解Modulus运算符:
7 % 5
这将返回2,因为5进入7一次,然后给出剩下的2,但是当我们把这个语句翻译为:
5 % 7
这给了我5的价值,使我略微困惑。 虽然整个7没有进入5,但是其中的一部分是为什么没有余数或剩余的正数或负数2?
如果是根据7个5进不了5的数值计算5的值为什么是剩余而不是5而不是7?
我觉得在我对模数运算符的理解中,有些东西是缺less的。
(这个解释只适用于正数,因为它取决于语言)
模数给出了一个数字除以另一个的余数。 如果你问一个8岁的孩子,5除以7(8因为他们大多不知道十进制数字),他会回答:0但是仍然是5。
你也可以使用这个等式:
a % b = a - floor(a / b) * b
floor(a / b)
表示您可以将b
除以b
(例如,参见下图)。 和floor(a / b) * b
成功共享的金额。 这意味着总共减去共享的部分等于该部门的剩余部分。 现在你可以使用这个公式:
5 % 7 = 5 - floor(5 / 7) * 7 = 5
也就是说,你的直觉是它可以是-2而不是5.事实上,在模运算中, -2 = 5 (mod 7)
因为它在Z中存在k,使得7k - 2 = 5
。
您可能没有学过模块化算术,但是您可能已经使用了angular度,并且知道-90°与270°相同,因为它是360的模。它是相似的,它包装! 所以说绕一圈,说周长是7,然后你读的是5,如果你用10,那么应该是3,因为10 % 7
是3。
正如其他人指出的,模数是基于剩余系统。
我认为一个更简单的方法来思考模数是在股利(被分割的数目)被除数完全分割之后剩下的。 所以如果我们考虑5%7,当你用5除以7时,7可以只用5次,而当你从5中减去0(7 * 0)(就像我们在小学所学的那样),剩下的会是5(mod)。 见下图。
0 ______ 7) 5 __-0____ 5
用相同的逻辑,-5模7将是-5(只有0 7s可以进-5和-5-0 * 7 = -5)。 同样的道理-5模-7也将是-5。 一些更有趣的案例:
5 mod(-3)= 2即5 – ( – 3 * -1)
(-5)mod(-3)= -2,即-5 – ( – 3 * 1)= – 5 + 3
模数是余数系统。
所以7%5 = 2。
5%7 = 5
3%7 = 3
2%7 = 2
1%7 = 1
在函数内部用于确定数组索引时。 这是安全的编程吗? 这是一个不同的问题。 我猜。
步骤1:5/7 = 0.71
步骤2:取小数点的左边,所以我们从0.71中取0,乘以7 0 * 7 = 0;
步骤#:5-0 = 5; 因此,5/7 = 5
模运算符为您提供“减less的残留系统”的结果。 例如对于模5 ,有5个整数计数:0,1,2,3,4。 实际上19 = 12 = 5 = -2 = -9(模7) 。 编程语言通过“减less的剩余系统”给出答案的主要区别。
下面给出一个找出余数的新方法
声明:余数总是不变的
ex : 26 divided by 7 gives R : 5
这可以通过find完全分开的数字26来更容易地find,这些数字更接近于除数,并取两者的差值
13 is the next number after 7 that completely divides 26 because after 7 comes 8, 9 , 10, 11, 12 where none of them divides 26 completely and give remainder 0. So 13 is the closest number to 7 which divides to give Remainder 0. now take the difference (13 ~ 7) = 5 which is the Remainder . note : for this to work divisor should be reduced to its simplest form ex: if 14 is the divisor ..7 has to be chosen to find the closest number dividing the dividend.