- 在线时间
- 57 小时
- 最后登录
- 2013-10-20
- 注册时间
- 2012-3-19
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1080 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 433
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 196
- 主题
- 13
- 精华
- 0
- 分享
- 82
- 好友
- 20
升级   44.33% TA的每日心情 | 开心 2013-10-20 20:29 |
|---|
签到天数: 103 天 [LV.6]常住居民II
- 自我介绍
- 建模编程方向
 群组: 学术交流A |
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】* k9 e2 P- v/ H: q+ F( J
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
, ~: G, r$ m- r昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
) ]2 k, W$ J5 T. p9 _! J$ V+ p: m* r) j! v- J' K0 I% @6 j7 w) q3 f
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
& ^' d0 T: B- F2 b7 n4 G 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。( w: L( i" N7 `5 W
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。# ]' ~2 m/ B! [8 U' @; f$ N
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
0 V3 {$ J: @& r; y% l, n1 a
9 J. j- n F6 _# N# d! }* r0 D+ H; a5 A7 p7 @. `4 |3 N4 |
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
- l' S) ]& Z. b0 r& |
" b* v. ^3 c( g4 \; _& H先将两个整数看作是正数,再作除法运算
0 V6 w( P3 U4 A% F①能整除时,其值为0! E5 r e4 {% X, o4 u6 C
②不能整除时,其值=除数×(整商+1)-被除数
9 q* e/ O+ j w* ?. T/ {/ D; c6 ]$ s" I: h" j
例:mod(36,-10)=-4" ]! E$ t, z' K
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
. L6 m) D$ y; M0 E例:mod(9,1.2)=0.68 v; i- c: P/ q1 F) n7 X8 ]& X
例:
6 F; K$ f: A U( ?' k>> mod(5,2)( d+ C7 T! \# i3 ?" {
ans =1 %“除数”是正,“余数”就是正
0 `' s# ~7 v3 h& a>> mod(-5,2)
- n$ N! ^# Y2 O" ^* |( {3 K6 I2 [" `ans =1& C$ g4 |! @0 y E3 s, z4 Q
>> mod(5,-2)% @; v; Y: m4 K7 m; h9 l7 X3 a
ans =-1 %“除数”是负,“余数‘就是负' F9 j3 n% Z1 D2 V6 x; E' U5 t2 V
>> mod(-5,-2)& A3 ]* S$ F7 e
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同" L; M2 d3 y+ w8 }+ t5 b9 r
>> rem(5,2)
; e! ?, |+ ~( @4 Z. D( zans =1 %“被除数”是正,“余数”就是正
7 B& s: j: |9 ]; w1 l3 j* f4 F>> rem(5,-2)! w3 W' B7 w% q. [
ans =1' [% n! R/ z$ b/ t$ J
>> rem(-5,2)* O3 K- T: y: c, o4 d6 V) a+ S
ans =-1 %“被除数”是负,“余数”就是负
4 z$ m0 g5 x1 o- R/ r7 L>> rem(-5,-2)
) g3 B7 [0 @9 [* i/ W5 xans =-1/ A6 U; f; Y7 c r4 F1 `5 R
6 c) l `) P' J9 O# a0 W) H( }& Y1 o1 O
慢慢体会,两者确实不一样
$ L# G+ J& {+ X4 T! Y9 o. R) D: i |
zan
|