- 在线时间
- 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)是不同的,今天在网上具体查了一下:& X+ C n R4 Q0 g! A% G) O
3 A5 K) h) z4 P通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:0 ?" u" l& t% S$ j4 z4 x
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
; `8 q- c. G; ]' ^+ v 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。& b' |$ v) ]" Z, @3 ^0 v/ ?. M% n0 g
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)2 T" I0 |: O! z+ M" m
0 T$ X R$ n" [
7 T. C7 q. D# {" v
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
- U+ r' I3 a' S2 V1 C" p, S# O8 |) Q' u. ?' X1 @. m
先将两个整数看作是正数,再作除法运算
+ `7 }1 {, P% s①能整除时,其值为0
: I1 S- v$ f8 s& I, z5 q. ^* ?②不能整除时,其值=除数×(整商+1)-被除数8 D' F: b/ Q( U7 ~1 M
5 M o7 A4 D- s# n: C M& I9 P
例:mod(36,-10)=-40 F5 w5 @% K8 B- x
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
$ [1 G! m1 O: X9 O例:mod(9,1.2)=0.6) x+ O3 K2 X; G3 C* N( C+ @0 f
例:* ]- f8 q" ]% E9 @# |5 F
>> mod(5,2)8 S1 G! \1 O" B0 ^ l1 T( C6 i
ans =1 %“除数”是正,“余数”就是正
5 l2 T$ V& D! E `, q5 T$ F>> mod(-5,2)
+ I" ?7 s8 [2 dans =1& D6 }/ p! j8 v7 Q/ j0 t
>> mod(5,-2)
3 I' i& q5 K8 M$ v$ rans =-1 %“除数”是负,“余数‘就是负2 @# Y' _% Q, D0 [4 H6 u
>> mod(-5,-2)7 y) ]$ {6 z m" o# G% @
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
" Q2 ^4 U: e$ t+ E( Q>> rem(5,2)' n9 q% R5 o, ?. S
ans =1 %“被除数”是正,“余数”就是正& S7 T- u9 b6 G6 _0 A" |4 r h
>> rem(5,-2)
2 O/ M* \$ w- t8 m( Wans =1' O: n2 h: a" N/ h2 q( j
>> rem(-5,2)
. [" m/ Z7 n1 | Jans =-1 %“被除数”是负,“余数”就是负0 W& [' H2 n- x. c- h0 H
>> rem(-5,-2)6 g7 J9 L) P1 P- c% d1 x, J+ x
ans =-1" H' ?% d3 R/ `/ o5 Q
4 o& P4 U2 Y5 Z0 X
- _, T) A8 ]2 |' ~
慢慢体会,两者确实不一样 |
zan
|