数学建模社区-数学中国
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记
[打印本页]
作者:
parkshinyang
时间:
2012-4-14 16:30
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
; _2 M0 Q% T) T8 h2 }$ t* ~' {
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
; Q0 U' _6 g3 `" z- o
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
' [" M9 l$ O! ^, F/ `
, I }- J1 T# u
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
. x- o: J- V6 W( ~
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
' S X8 I# Z" E2 }" r& u
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
& `/ h) D2 a) 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)
; l' J9 q- q4 a/ T& A6 {
f- j; @) T3 |$ P* W! [/ G) v9 Z
- h) A' p8 h2 n$ |8 Y. k
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
, I3 b6 h: d# v7 D9 l+ d( C
) |$ F5 M9 q' F) r* L5 I! f
先将两个整数看作是正数,再作除法运算
7 w1 B' ^1 E& E1 m$ Y& D; K! q
①能整除时,其值为0
+ a8 ^! s+ Z d8 a/ f
②不能整除时,其值=除数×(整商+1)-被除数
1 l' p9 e m: y
/ m j T( \8 G& V8 m6 P% Z/ J! D
例:mod(36,-10)=-4
4 j+ }7 h3 v7 A$ i8 f' k5 g
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
. a6 X% y3 [) G# k4 ]
例:mod(9,1.2)=0.6
1 _# u5 j+ g- U0 ^! ^
例:
- m% Y) v# \ m- K0 o( `+ @: ^4 r
>> mod(5,2)
8 X2 J+ Q0 m4 B
ans =1 %“除数”是正,“余数”就是正
" t$ h. k4 U7 B7 D$ x
>> mod(-5,2)
1 G# k$ D* m* P: z
ans =1
: v* `: x7 U$ F) p
>> mod(5,-2)
* a5 |6 o7 c) e( h
ans =-1 %“除数”是负,“余数‘就是负
! P; P. { u( s9 D+ v9 g; m/ P
>> mod(-5,-2)
# p. W8 y1 R$ `: d$ W6 z& y7 a
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
! @% o8 s: R, t3 u: d$ V
>> rem(5,2)
- U, |+ j8 G% D- V% R' w
ans =1 %“被除数”是正,“余数”就是正
1 U* p, d# h, T, G7 A1 `4 }" j
>> rem(5,-2)
' ]1 Q; M: P3 y& h0 _
ans =1
& a0 x; X. T: ~$ q( H+ \+ K# Z1 J1 p
>> rem(-5,2)
1 g- _4 A1 x/ s: ?
ans =-1 %“被除数”是负,“余数”就是负
0 Y/ D$ F" l4 R; p" C+ V5 j
>> rem(-5,-2)
" k( E( \% m; ~7 z8 o
ans =-1
2 [7 z/ J9 W B# K/ k- x; p9 s3 a
! E9 u6 d& p& c( {& r
# L3 Z6 ] I( |3 G
慢慢体会,两者确实不一样
$ O2 a: j/ e$ X" e6 n& }( n
作者:
parkshinyang
时间:
2012-4-14 18:11
数据处理的时候用的着
作者:
parkshinyang
时间:
2012-4-14 19:17
正在编程mcm04年的题 亚历山大
作者:
parkshinyang
时间:
2012-4-14 19:19
正在编程mcm04年的题 亚历山大
作者:
lyj658
时间:
2012-4-14 21:01
帮你顶一下
作者:
parkshinyang
时间:
2012-4-14 21:14
lyj658 发表于 2012-4-14 21:01
, v2 g( p' {: v' k3 t
帮你顶一下
1 S$ {. H7 s: G) S9 ~* D8 y
谢谢啦 哈哈
作者:
挣未来
时间:
2012-7-9 02:09
留着,要用的时候再来看好了~~~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5