- 在线时间
- 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)是不同的,今天在网上具体查了一下:* u0 _, S' g2 C
/ V/ l; K# }9 y2 {) y! A通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:! D s5 J, V/ s8 m* }7 W, G
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
- Y9 x8 C4 }6 m5 v4 c" T; }' H 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
' z6 c, A5 X8 N+ W, I L7 _ rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
5 T/ p! j/ z& E- X$ d0 N3 h
# u0 T1 b, ?" W M3 M) x( M: G- O
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)# ]0 P0 N' m0 m3 B, ?
7 J2 ~$ N5 u/ d$ b) l( C
先将两个整数看作是正数,再作除法运算
8 n# }% U( m) o! \①能整除时,其值为0; ?+ @. |( z" H6 d
②不能整除时,其值=除数×(整商+1)-被除数
7 L; Z9 F5 _) }) t8 Q6 F* t, w9 t6 ]& k. V, }2 X
例:mod(36,-10)=-4
1 w7 l! T5 z' _( v即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
: I' y4 w6 \1 A6 }+ D4 s! q例:mod(9,1.2)=0.6
' i' J, R5 ~0 `例:# W8 H6 |( e# h! q0 z6 z
>> mod(5,2)! g5 B; u) f' n1 J: G. X1 R6 z7 q
ans =1 %“除数”是正,“余数”就是正
, c! u5 I5 c7 \' i# O& N/ l>> mod(-5,2)* G3 `" D1 u# W# p2 K
ans =1
' T- J3 p) D$ ]; V, o+ o- f/ x>> mod(5,-2)
+ F8 D( U* a8 I/ }- e2 }& Y# y: rans =-1 %“除数”是负,“余数‘就是负4 _) {$ f, e F& L: T* K3 X( h
>> mod(-5,-2); U& B' W" P5 ] H+ q$ E
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
1 {; \: J' O% }>> rem(5,2)# K1 a. N! d3 K" d8 c
ans =1 %“被除数”是正,“余数”就是正2 g# K4 G: I0 Y* c8 U
>> rem(5,-2)
3 f& S+ O; k" zans =1
1 F3 ?; t0 A. p. I' f>> rem(-5,2)6 n }) [2 G! P0 ?" T0 G
ans =-1 %“被除数”是负,“余数”就是负
0 K( J7 {/ v, C3 i, C" e$ D% K# F% S>> rem(-5,-2)
* t/ `. o' z! Uans =-1 H$ W- {9 @% @
! K$ {' y! e y6 U4 K0 b7 j! N# C& z* `% p8 h V
慢慢体会,两者确实不一样 |
zan
|