- 在线时间
- 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)是不同的,今天在网上具体查了一下:
" `. s" V7 Y! e1 N8 i1 w# u4 s7 a! K& j9 g: f
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
3 p4 A( r+ S. `$ I: n* s2 H 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。' P4 |& @4 X5 G5 E+ N
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
1 Q0 p% ?9 A8 l+ p# D9 h* X) J6 \ rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)8 ~ E# V) ~+ i. l" o
* `) k, M! v2 r8 \; `) H" s
1 Q& l. s8 J! d/ a
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
* u7 J7 r: f7 Z- O( D9 {$ S" U0 ~- v& b- l9 z E
先将两个整数看作是正数,再作除法运算
4 w: ?( i# c9 {①能整除时,其值为0
2 y% l ]' `+ y( a" p7 a" Q* n②不能整除时,其值=除数×(整商+1)-被除数
$ w3 h% D9 K \- l" j
7 I$ @0 ?$ x: r4 y7 d例:mod(36,-10)=-4
8 F- S' x8 w# ~4 U/ G即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
7 I( [6 j2 c+ N" u) m例:mod(9,1.2)=0.61 @) g# v4 C8 {
例:
8 X- Y+ P' `" p& j>> mod(5,2)* D2 c4 _1 o4 m
ans =1 %“除数”是正,“余数”就是正
# o- p1 [- x! e3 e& }# E>> mod(-5,2)0 g' F- Z1 o Y) X8 p
ans =1- Y7 I7 O v3 L0 N
>> mod(5,-2)* u; n5 N$ s: K" R1 R% p
ans =-1 %“除数”是负,“余数‘就是负$ M) {" U) o) |+ s/ W# ?) j% a* U
>> mod(-5,-2)/ j' M: P2 n4 j6 L8 k5 C+ T1 G2 z
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同- J6 g1 g* P$ o" {7 x, [
>> rem(5,2)& t8 J6 V7 u9 O/ `1 U9 A1 I
ans =1 %“被除数”是正,“余数”就是正7 W$ R* I/ g# V
>> rem(5,-2)
! b8 R' }* l' O& g' tans =1# d" I" H1 d- _
>> rem(-5,2)9 E! E3 l1 I c1 N# n: M
ans =-1 %“被除数”是负,“余数”就是负
" X+ r# R& Q! X% |2 v+ r) { O>> rem(-5,-2)
: q1 |; H0 w9 M& F1 A' hans =-1/ X: U, z8 |8 ?- l0 u- s
7 j& r7 z" p! m8 T Y7 |
0 ~4 {& B& |( Z8 P* |% m9 w9 ~$ R慢慢体会,两者确实不一样 |
zan
|