- 在线时间
- 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】6 f7 b6 \" C5 E' {/ J% e" H" j. @
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
- o- j2 j8 i& _2 ~* D昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
( h+ _( P( V% B/ x# Y$ a3 t# f3 D* P* G& f* ]5 B
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
1 k4 v5 N$ o( n( ~) O" P8 W 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。; p9 P9 V" }3 }# z& d# t7 S
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
- s( u" |1 a- T/ R- \# e' f rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)$ j8 s+ C3 i* Q D2 p, d
- N9 K3 ] E+ P( E
0 }$ w+ ?9 y0 ]: f
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
: H7 d4 [5 A5 a( A, H2 T! p5 A! ~0 z; J6 E+ S5 j! D) D" b
先将两个整数看作是正数,再作除法运算
/ l5 o' ~/ p4 q% o, K3 c+ n& x. l①能整除时,其值为0
* M/ p S% p% V c5 m" y7 ^②不能整除时,其值=除数×(整商+1)-被除数6 }0 j/ o0 r" `6 i1 }$ J3 y0 P! z
1 ]. r' q; [1 {例:mod(36,-10)=-45 ~) d1 T: d/ J& |
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。4 d9 b, u4 u# R; ~$ V [: B
例:mod(9,1.2)=0.67 a' E2 F' O+ H' a+ z( v' G+ H( V
例:, F* W: ~9 h- p$ [# w
>> mod(5,2)6 L( K5 _, Z8 W+ n, K. I0 ~: f7 G
ans =1 %“除数”是正,“余数”就是正* R+ X8 Y* e' e2 C: s5 B
>> mod(-5,2)
3 K, M) x, S; g3 P" j5 Gans =13 Y9 \; s$ B8 u
>> mod(5,-2)
H% R- a' x8 _& J; wans =-1 %“除数”是负,“余数‘就是负* B9 Y5 n z$ ]9 d/ {8 N
>> mod(-5,-2)
6 ]( |/ f9 c- T9 lans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同1 b* s, C' G4 g: ]: k) W7 H
>> rem(5,2), J" v( C$ Y3 b
ans =1 %“被除数”是正,“余数”就是正/ `, G9 b8 S& \/ l3 X: L& S. a8 F
>> rem(5,-2)
3 V3 h) F' \$ N! V$ X6 j1 u1 nans =15 |8 M7 E5 i9 D( ^$ r
>> rem(-5,2)
- V% q B; s+ y, x7 D& X" D& P) v8 Gans =-1 %“被除数”是负,“余数”就是负
/ k' T- m. j3 l6 V @>> rem(-5,-2)
/ X- [( [8 j" H& k `+ t% g( W# ~, eans =-1
# ?4 l' N5 M! X$ x& }, @
8 S) M0 O% G0 u% C) S: |3 p5 u( g* e* W% q* R# u/ e
慢慢体会,两者确实不一样
! m5 Y# J" ?3 T- U) G+ }8 K |
zan
|