对C、Java、Python等编程语言对正负整数取余运算的底层逻辑理解
偶然遇到一个python取余运算的问题,不是很理解,于是查找了一些文章进行分析
我们提供的服务有:成都网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、长沙县ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的长沙县网站制作公司
本文章参考 http://ceeji.net/blog/mod-in-real/ 进行实例分析
直接引用结论
1.对于任何同号的两个整数,其取余结果没有争议,所有语言的运算原则都是使商尽可能小。
2.对于异号的两个整数,C++/Java语言的原则是使商尽可能大,很多python 等新型语言和网页计算器的原则是使商尽可能小
举例:
分析验证:
对于Python中,正负整数取余运算:
若除数,被除数同号:
1) 99 % 7 分解操作 => 7 * 14 + 1 , 商为 14 ,余数为 1
分解操作=> 7 * 15 +(-6),商为 15,余数为 -6
由开头的结论得知,python的计算原则是使商尽可能小,所以 取商 14 ,余数为 1
2)-99 % (-7) 分解操作 => -7* 14 +(-1),商为 14,余数为 -1
分解操作 => -7*-15 + 6 ,商为 15,余数为 6
由开头的结论得知,python的计算原则是使商尽可能小,所以 取商 14 ,余数为 -1
若除数,被除数异号:
1) 99 % -7 分解操作 => -7 * (-14) + 1 , 商为 -14 ,余数为 1
分解操作 => -7 * (-15) +(-6),商为 -15,余数为 -6
由开头的结论得知,python的计算原则是使商尽可能小,所以 取商 -15 ,余数为 -6
2)-99 % 7 分解操作 => 7*(-14)+(-1),商为 -14,余数为 -1
分解操作 => 7*(-15)+(6),商为 -15,余数为 6
由开头的结论得知,python的计算原则是使商尽可能小,所以 取商 -15 ,余数为 6
以上验证实验输出结果。
网页题目:对C、Java、Python等编程语言对正负整数取余运算的底层逻辑理解
文章链接:http://hbruida.cn/article/ighdis.html