- 在线时间
- 2 小时
- 最后登录
- 2011-10-21
- 注册时间
- 2009-7-12
- 听众数
- 14
- 收听数
- 0
- 能力
- 0 分
- 体力
- 2150 点
- 威望
- 17 点
- 阅读权限
- 50
- 积分
- 932
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 192
- 主题
- 26
- 精华
- 2
- 分享
- 0
- 好友
- 6
升级   83% TA的每日心情 | 开心 2011-10-21 21:58 |
---|
签到天数: 13 天 [LV.3]偶尔看看II
- 自我介绍
- 进化中。。。。。。。。
 |
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
0 K0 i3 E9 j% c* Y0 t, d. [. ?& C3 I0 ?! S& i: J5 A! w" v# I
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
) b5 l* _/ O0 m+ S u3 ` 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
# s# ?% {. O( @. ~ 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
( p+ X1 {- @2 R1 o+ i rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)6 M% s0 P; T3 z) b% X( @
' I2 w4 {/ \: V `5 T. y
: n4 a" ?. O6 q- V( ?8 `两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
* l1 ]! s: v1 }8 ?, y( f6 }' q7 H* x. G c0 M4 s
先将两个整数看作是正数,再作除法运算" C' Y' P! _' _" S2 w7 p+ a, x
①能整除时,其值为0, x0 F: p3 S# z
②不能整除时,其值=除数×(整商+1)-被除数" [6 I) ~8 `$ P+ y
6 g' p" @) `% X1 M例:mod(36,-10)=-4
3 P3 ?+ i8 I" L0 h即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 2 x- [8 l" |3 T% g( h4 F( I! @
例:mod(9,1.2)=0.6
+ o1 g8 X7 Y2 t$ ?8 q/ n7 m例:) l6 R6 V2 J+ `" _! x
>> mod(5,2)1 m, h* @! I$ f$ L
ans =1 %“除数”是正,“余数”就是正' f5 i% u( `7 @0 q' s5 G
>> mod(-5,2)5 l* i% s+ t+ d; R& O
ans =1
* i1 v: ~, \( H' V8 B5 x>> mod(5,-2): d- ^# @- M" c' y( ]! w) @0 R5 ^; r
ans =-1 %“除数”是负,“余数‘就是负
, o: z8 A4 _, r& `* q>> mod(-5,-2)- E7 f s5 c, N6 h9 R* V2 U$ w
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
8 x( f' x! i3 d! Y. y>> rem(5,2)
( V6 t' B; Q6 ~9 X8 V# l! ~# Rans =1 %“被除数”是正,“余数”就是正
M5 _% ~2 x! \4 a7 m$ c>> rem(5,-2)9 A- U1 P' d' X. L r d
ans =1
5 c o# t( t- T, [% d( f>> rem(-5,2)
4 |; x0 z& I9 w! j; A$ `, wans =-1 %“被除数”是负,“余数”就是负6 T, x7 j2 n1 a
>> rem(-5,-2)
x+ V- |1 K" t$ x) O( wans =-1: K9 N% w& y* ~
/ p0 G2 _1 b; m; ^
, D' s3 w) t/ @! n慢慢体会,两者确实不一样 |
zan
|