- 在线时间
- 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)是不同的,今天在网上具体查了一下:
: F! z6 I% u9 k/ `4 A
- V+ t4 f9 P8 d通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:- X) m8 O- P# J- h. ^! y8 B
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
/ d' t& d. i$ R' }! b 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
1 W& i2 J0 U Q$ a 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 y$ Z% B }4 s% r! a- R3 W0 y; N6 h4 O7 P/ X
; U( M' ~$ s" P* r m/ y4 y( q
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
q* V% `) f+ V3 ^2 l; g% A+ U3 t1 @
先将两个整数看作是正数,再作除法运算
3 y# b- R4 W3 ~$ D①能整除时,其值为0
& Y; ~' p. s) L% @: T; [' F* c②不能整除时,其值=除数×(整商+1)-被除数' y. G$ C' z# B7 k& s
- n0 z/ x1 m9 ~ E- ]8 @3 i
例:mod(36,-10)=-4
' Q+ E" |7 l- W* o6 T$ H即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
/ v$ @8 K- z' C例:mod(9,1.2)=0.6
. P8 `' ~% U8 c% a" H: Q' B+ V7 F/ |; y; I例:' N% o2 d; D9 S% d; D5 g2 q% h
>> mod(5,2), T9 y! k; q! D& x! D- e
ans =1 %“除数”是正,“余数”就是正' j% ~6 r- z9 L* t
>> mod(-5,2)
; i6 }) J1 { c4 j9 f# o. V9 mans =1
, |) c J* G' g. W: c# ]( y>> mod(5,-2)7 h; a) R2 ]6 @: L) `6 r9 Z# m- U
ans =-1 %“除数”是负,“余数‘就是负
9 e E) u7 `9 R- w>> mod(-5,-2)% b% P; C3 h4 U- j
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同0 c" r3 P* j$ G, U6 ?8 {
>> rem(5,2)& ?9 O! t: J; a/ c4 N
ans =1 %“被除数”是正,“余数”就是正3 D0 O, M n6 w5 i! X
>> rem(5,-2)5 y, Q: U2 y2 V
ans =1; ?7 Y$ n8 H) Y% I6 @7 i
>> rem(-5,2)
7 U( p% L7 B/ e- J& L+ @8 P1 xans =-1 %“被除数”是负,“余数”就是负
2 K: F( g( ]$ |2 {1 P% n6 C>> rem(-5,-2)3 N7 K. f: C4 w7 [, ^. a' |
ans =-1
3 @9 y$ s; D& s. _& n6 s
4 N( W+ I K. K8 w& Z! Y# Z+ ^/ y1 M8 y2 X: ]) ~
慢慢体会,两者确实不一样 |
zan
|