- 在线时间
- 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)是不同的,今天在网上具体查了一下:
, c' Y# s" C% h7 A' {. N8 B4 q0 h" d& m% B, ?6 k+ o- V
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:: @; B% Y2 a$ m6 ^ }8 ~
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。$ V- S% E' C- [; `2 I8 |
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
' c6 c; m2 n7 |5 s: 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)
7 c- b3 p7 r% R0 }, }
1 J; J0 d0 d! p
% L- A, x# t4 A+ X2 i9 o. M# D两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)8 q( Q Q, l+ z& W# X+ f- p
K8 ?8 X. m6 f5 c. Y8 F' w
先将两个整数看作是正数,再作除法运算/ G9 u% b( `. u( p7 V$ [3 i
①能整除时,其值为0
+ ^0 _& T% Z0 h* {2 n3 {+ j②不能整除时,其值=除数×(整商+1)-被除数& G% Z2 }5 O. F2 h
% [/ U) i. e ^! M! {0 Z例:mod(36,-10)=-4% ^8 Y1 G% W8 @
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 3 B* \) w4 _5 W8 j- Y6 b+ L
例:mod(9,1.2)=0.64 `: Z* C0 g$ H
例:
- G& m& s$ c" ]( U ]3 d& Z>> mod(5,2)
) W& p0 E+ x& w3 B5 tans =1 %“除数”是正,“余数”就是正
& ~- H1 A! M6 F& r5 b>> mod(-5,2)
4 r* C: \, g4 t9 y! Oans =1
( ?) r. S7 q8 P( C/ e4 F; W>> mod(5,-2)* w6 @" P$ y! q; Y
ans =-1 %“除数”是负,“余数‘就是负
0 O7 H1 l- Q+ T( e4 V% ~>> mod(-5,-2)1 W4 o/ L1 F" K5 B
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
1 R4 `4 n7 m/ {$ M. [9 o( [% p>> rem(5,2)
- h' C4 f4 o; ?; A$ U/ A9 }5 p& Oans =1 %“被除数”是正,“余数”就是正
. U3 \3 d; S+ G9 ]/ m4 ^>> rem(5,-2)4 g5 ~( M% J/ ]
ans =1
, i9 u1 i2 K4 W6 K I6 ?0 K>> rem(-5,2)
% y; R3 U0 b: d3 Bans =-1 %“被除数”是负,“余数”就是负4 Z) O" p3 {7 h7 }2 M! y& U4 E
>> rem(-5,-2)
' y/ B: P4 a* T: K( h$ [* A5 ?ans =-1
: B" y \0 Q2 {( t- J) _2 v! I0 V9 D/ g
0 G+ ^0 N" M# T3 E+ M- h! I
慢慢体会,两者确实不一样 |
zan
|