笔者之前一直把取余和取模运算混淆,甚至认为这两者是同一种事物,各种资料说法就更不统一了。其实取余是数学运算,取模是计算机运算。记得在上小学的时候,学过余数,那时候还没有学负数。比如 7 除以 4 等于 1,余 3;10 除以 3 等于 3,余 1。很简单,余数要小于除数。(引入负数的概念之后,余数的绝对值要小于除数的绝对值)下面就说一下求余运算的原理吧。
对于 n 和 p,总能表示成n = k*p + r,也就是 n 除以 p 等于 k,余 r。
对于整型数a,b来说,取模运算或者求余运算的方法都是:
1.求整数商: c = a/b;
2.计算模或者余数: r = a – c*b.
求模运算和求余运算在第一步不同: 取余运算在取c的值时,向0方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。
例如:计算-7 Mod 4,那么:a = -7;b = 4;数学运算 a ÷ b = -7 ÷ 4 = -1.75。
第一步:求整数商c,如进行求模运算c = -2(-1.75向负无穷方向舍入),求余c = -1(-1.75向0方向舍入);
第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r = -3。
归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。因为,a和b符号一致,商为正数,负无穷和0都在商的同一方向。
另外各个环境下%运算符的含义不同,比如c/c++,Java 为取余,而Python则为取模。
来源:http://blog.csdn.net/handsomelinux/article/details/51205228
分类目录
- arch/management (17)
- computer (38)
- java/j2ee (304)
- lnmpa (237)
- mac/iphone/ipad/android (11)
- mysql/oracle/postgresql (126)
- os/software (74)
- other (518)
- python (6)
- redis/memcached/mongo (31)
- sitebuild (143)
随便看看
标签云
程序员 创业 人生箴言 eclipse 快捷键 术语 索引 unix命令 vim wordpress java学习笔记 环境变量 oracle内置函数 index 人生 数据类型 nohup tuxedo mysql学习笔记 MS-DOS命令 servlet spring 职场进阶 职业进阶 服务器选购 服务器选型 apache JPA MongoDB 注解 tomcat 子女教育 jquery maven JVM aix命令 网络营销 java异常 seo 人生规划 关键字 css 网络推广 struts 系统优化 成长 frame iframe bluehost jdbc select 我的信仰 oracle函数 cookie HashMap 站长工具 乱码 ArrayList secureCRT jsp session tail find halt 事务 oracle单记录函数 算法 URL window table javascript操作表单元素 String 字符串处理 健康 http 域名 情感 more google A记录 域名解析 netstat 弹出对话框 弹出窗口 框架集 框架 excel 字符串 javascript函数 showModalDialog nginx number 数组 sql frameset 开源程序 java数组 软件 oracle服务友情链接
收藏链接