- 在线时间
- 57 小时
- 最后登录
- 2013-10-20
- 注册时间
- 2012-3-19
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1080 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 433
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 196
- 主题
- 13
- 精华
- 0
- 分享
- 82
- 好友
- 20
升级   44.33% TA的每日心情 | 开心 2013-10-20 20:29 |
|---|
签到天数: 103 天 [LV.6]常住居民II
- 自我介绍
- 建模编程方向
 群组: 学术交流A |
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
3 b3 v+ ?/ a" ?* \本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
$ v6 n/ c) W7 }6 n% L8 B昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:+ l4 E' H' t2 N; m9 I. J2 X
9 i! m2 \' F: E4 R通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
0 u4 e0 a4 p' E8 b& D 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
: Z. t R4 x" H& q7 H, T" [9 Z$ s 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
, M# s6 n1 z( w& t8 y5 p0 Y rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
* P, M" m8 k, s# |9 I( \/ j/ {- k# u; M
3 F0 R5 X& a: J' S0 W4 R% w
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)+ k3 a* r1 x" L# |8 X
' w/ k' z* J: ~3 t先将两个整数看作是正数,再作除法运算! c( C( I1 t/ T8 h
①能整除时,其值为0
9 C" B2 \* B- H+ f9 |4 \②不能整除时,其值=除数×(整商+1)-被除数8 ]) N: Y$ R6 v8 i, a+ F1 H
0 z# n" V5 @& x4 M1 `
例:mod(36,-10)=-4
3 u" N5 o1 i$ x) I2 S9 m即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。1 x% u8 N; N1 \: @2 _4 Q
例:mod(9,1.2)=0.6
6 ?( R+ P2 U" N. G5 \4 Z例:9 J2 h1 o7 F: D2 u$ b: S
>> mod(5,2)
5 { _+ B- o1 p' C) ~( vans =1 %“除数”是正,“余数”就是正4 x! D/ P# a, M6 }! y y
>> mod(-5,2)
, h1 Q; C" Q/ r; \5 X+ Tans =1, H8 e, B; I/ }: {1 g
>> mod(5,-2)
) m& ]3 E, t$ T' S6 h* Vans =-1 %“除数”是负,“余数‘就是负
# H% y, J' O7 U, K6 O4 ~4 n>> mod(-5,-2): Z& q. ]. S) v6 D' g" X
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同; a* r0 w1 w- h$ |& q
>> rem(5,2)& p2 P# `6 S& ^( G% n( a5 l; a
ans =1 %“被除数”是正,“余数”就是正8 r" b, G& l* E+ @% a, S
>> rem(5,-2)' J" J, W0 Q; M7 G
ans =1+ y' I" r0 B5 o# o5 _2 ?
>> rem(-5,2)5 e2 B2 H+ w0 T/ X4 f, G6 N
ans =-1 %“被除数”是负,“余数”就是负& B% ^3 C2 T: G# n
>> rem(-5,-2)% ]8 D8 i4 P; Z
ans =-11 z5 s0 M |" U
8 ~& O7 H! ]0 f1 D* U' i
, L+ N; X0 {# z- [, S7 F! E慢慢体会,两者确实不一样
/ Q! l2 O( B4 N- j. J |
zan
|