- 在线时间
- 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)是不同的,今天在网上具体查了一下:5 a# R. m/ x j1 Z( q8 k/ ?
$ ?* ~% ^0 w5 i1 [( k/ p通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:3 a2 O0 I; B& B
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
$ m' S/ }' a5 t4 o 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
8 m5 C; }& o6 w rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
3 `/ K. s+ A m" ], A3 Y$ C6 p4 A& K9 q0 s) Z6 K2 E
' ?1 d6 ?! {: K
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
. L' ?4 a& b+ U6 L9 d* J _; b( `" m3 s1 g/ y& R
先将两个整数看作是正数,再作除法运算2 J% Q5 j7 {3 i4 o" U
①能整除时,其值为0# Z) ]' Y8 ^4 ^0 C
②不能整除时,其值=除数×(整商+1)-被除数' N7 p* N- C7 C4 ?& Y4 e# a3 k
: g% I: c3 n- ?; k4 A例:mod(36,-10)=-49 B* `/ J( ~3 \: M! f
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 ( W: L4 P8 p$ E7 i& a5 T L
例:mod(9,1.2)=0.6( v0 u1 P7 u9 R* c. x
例:- i8 @$ d$ g8 q: `+ b# M
>> mod(5,2) O2 y/ e1 O) n4 ^( p# |4 @
ans =1 %“除数”是正,“余数”就是正( ^7 V! z* Y9 @8 R) B9 e
>> mod(-5,2)- X( [8 q! o" o9 C- n
ans =1) A! c& V' H# f8 q
>> mod(5,-2)
+ [% _! J9 v1 @3 Y) o. L/ pans =-1 %“除数”是负,“余数‘就是负2 \% p2 b9 w9 f# l h& \
>> mod(-5,-2)( b6 ~; f. _, K, C
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
, Z) g- T0 w7 M u>> rem(5,2)
9 M; Q; r) B! H. r4 {ans =1 %“被除数”是正,“余数”就是正5 G( M) I% t1 Q1 G& J
>> rem(5,-2)/ F& N& j) [; e; Z! G y+ G: i
ans =1
8 ]$ y M2 _( b; T>> rem(-5,2)
6 F- ~1 Y8 k; T5 O) gans =-1 %“被除数”是负,“余数”就是负
% E" H/ L& u% u( A6 t# E>> rem(-5,-2)
* y! j, b3 ?6 E# A8 C: }4 jans =-1
, Z5 @4 N+ z; W8 p" V) q* J4 S7 W! v0 ]
6 e! F/ y6 }9 j3 \
慢慢体会,两者确实不一样 |
zan
|