Hello,modulus!
我印象中的取余运算
10除以3取余得1:10%3=1
20除以8取余得4:20%8=4
就是两个数相除除不尽时剩下的余数。
今天的遭遇, 让我重新认识了取余运算。
取余运算 | 计算过程 | 结果 |
---|---|---|
-10 %3 | ? | -1 |
3%-10 | ? | 3 |
10%-3 | ? | 1 |
-3%10 | ? | -3 |
10%-3 | ? | 1 |
0%52 | ? | 0 |
-52%-10 | ? | -2 |
这下长了见识,没玩过这样的。
直接十万个什么,查了好多资料,没一个直截了当的。
自己算,还不如直接用C来跑一把呢!
示例代码
#include<stdio.h>
void main()
{
puts("两个正数之间的取模运算");
int i=5;
int j=3;
printf("5mod3\t%d\n",i%j);//结果等于2
printf("3mod5\t%d\n",j%i);//结果等于3
//----------------------------------------------
puts("两个负数之间的取模运算");
i=-5;
j=-3;
printf("-5mod-3\t%d\n",i%j);//结果等于-2
printf("-3mod-5\t%d\n",j%i);//结果等于-3
//----------------------------------------------
puts("两个异号数之间的取模运算之一");
i=-15;
j=6;
printf("-15mod6\t%d\n",i%j);//结果等于-3
printf("6mod-15\t%d\n",j%i);//结果等于6
//----------------------------------------------
puts("两个异号数之间的取模运算之二");
i=20;
j=-8;
printf("20mod-8\t%d\n",i%j);//结果等于4
printf("-8mod20\t%d\n",j%i);//结果等于-8
}
运行效果
跑起来倒是挺痛快的,到底怎么算的呢?
自然数与自然数之间的取余运算是一目了然的
而负数与负数、负数与正数它们之间的取余运算呢?
有负数参与的取余运算,取负数的绝对值进行取余运算,求出余数之后再给余数加上被除数的符号。
例如:
-10%3=-(10%3)=-1
-10%-3=-(10%3)=-1
-3%10=-(3%10)=-3
10%-3=(10%3)=1
到这里,也应该结束了。
其实还有一个地方,一开始也困扰到我了。
两个同号的数,比如说52和20,我能理解52%20=12,却不怎么理解20%52=20。
希望下面的代码会给你启发
#include<stdio.h>
void main()
{
int i=52;
int j=20;
printf("attention!\t20 mod 52 =\t%d\n",j%i);
puts("---------------------------");
printf("20/52 =\t%d\n",j/i);//20除以52的商,直接取整数部分,得0
int remainder=j-i*(j/i);//余数,可以通过被除数减去除数和商的积得到
printf("attention!\t20-52*(20/52) =\t%d\n",remainder);
}
Goodbye,modulus!
今天的文章令人头痛的取余运算—modulus!分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64150.html