数学建模社区-数学中国
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
[打印本页]
作者:
木长春
时间:
2009-11-15 19:51
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
) d# d% T. p5 B( ^- o
$ f! m' M7 m: D) ?0 _
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
/ [& I. f9 q( y8 E. f6 M( o
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
6 o) x2 D# ]5 v: H0 w
这是由于这两个函数的生成机制不同,
rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
t& I* y/ M2 `' E, ]9 R
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
7 K3 j# O8 o% ^! j/ X
) c: c, [ d% h# ]/ X
1 N% X* S" F5 @. A
两个异号整数取模取值规律
(
当是小数时也是这个运算规律,这一点好像与C语言的不太一样
)
5 P3 c t- K6 } Z
2 ?1 b- N: k) i* S
先将两个整数看作是正数,再作除法运算
2 M, K! Q7 J$ H+ f$ O& V
①能整除时,其值为0
0 O/ D& J% W! s. ~
②不能整除时,其值=除数×(整商+1)-被除数
- Q1 v$ T' _% G1 q( R% \3 k
* n) P% d5 a+ y
例:mod(36,-10)=-4
- |0 A( C- d$ W. o* ^/ d
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
; H s9 F) _! y3 \! _* K6 ?
例:
mod(9,1.2)=0.6
! A4 Y9 @8 ?5 |+ O4 j! e1 v1 w
例:
# a" C9 z E: x5 ~; [3 T. g
>> mod(5,2)
: b' K7 Q A% j8 L
ans =1 %“除数”是正,“余数”就是正
+ U" D) C' a- U7 K+ @$ O
>> mod(-5,2)
& P0 p; e. O s. M# n
ans =1
7 K8 o2 N& \- P6 w! n9 |
>> mod(5,-2)
7 P. t/ z4 c N* v* @. v0 \4 ]
ans =-1 %“除数”是负,“余数‘就是负
6 H4 @$ {/ s0 ~( y& f
>> mod(-5,-2)
+ f8 f, q* a4 _) D8 S) \ S
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
: `3 Z8 N) A' K5 a7 ~* _; ]4 O
>> rem(5,2)
* [. B% R) C* @+ B
ans =1 %“被除数”是正,“余数”就是正
' b7 }- L/ x' L8 i
>> rem(5,-2)
/ w- f3 _. \! ]: x
ans =1
: f. x- K& u+ Z. F5 a+ y# `
>> rem(-5,2)
4 Y; ^1 W1 H) P8 E! c' v8 `' I
ans =-1 %“被除数”是负,“余数”就是负
1 s/ E) W+ A& k
>> rem(-5,-2)
9 V" V/ | s/ ^( x8 m) s9 d0 M$ G2 D+ T
ans =-1
/ A- I- f+ p6 A8 q; L4 O
% Z0 \. U$ D' C9 }& r! Q
& Y# i/ F9 @, o: U E
慢慢体会,两者确实不一样
作者:
大笨象
时间:
2009-11-15 22:39
不错。自己动手丰衣足食~学习方法很好,兴趣很浓呀。
作者:
惟楚有才
时间:
2010-3-3 21:53
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者:
high1989
时间:
2010-4-24 14:15
多谢,Matlab自带的帮助看不懂……
作者:
土豆炒豆芽
时间:
2010-10-13 09:03
不过楼主,还是不明白呀~当被除数时负数时比如mod(-5,2),这时取得n=-2吗?
作者:
paulci
时间:
2012-8-10 09:47
不错,学习了,楼主仔细
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5