数学建模社区-数学中国
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记
[打印本页]
作者:
parkshinyang
时间:
2012-4-14 16:30
标题:
取模(mod)与取余(rem)的区别——Matlab学习笔记
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
8 O( X- I. s% d9 d2 I' Q# [0 P
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者
1 H+ \2 X7 E4 D
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
) K! |2 o8 S4 ~1 Q* `0 o
# z% B3 b9 P( `% }
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:
! ]7 \; ?. T8 q# B
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
; c, |7 w1 l, R X6 K( O y3 W* v
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。
! I" F' } L- F% V4 ?
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
( O: ]' y: v! R# ~: O8 s( I
6 O4 w# o4 K7 d' w
9 }. `" ~0 C& U6 E! p
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
/ ?, U+ @( q/ U
" C, N% i1 V! Q2 u- ]
先将两个整数看作是正数,再作除法运算
2 @7 C7 i6 C$ R$ Y
①能整除时,其值为0
! }, a/ |7 A8 k& @8 V: Q3 |
②不能整除时,其值=除数×(整商+1)-被除数
0 H I/ z4 D! w1 U" R6 ^" I: l
+ N" M( [. w& T! J+ C
例:mod(36,-10)=-4
# Q) g" {8 O6 o
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
- N. y0 R `% L1 t7 c1 R+ R$ i5 ~
例:mod(9,1.2)=0.6
! w1 O+ T' g" m
例:
. W* ^! g. M r" ]9 }3 e- R& j
>> mod(5,2)
$ m8 _& @) A5 i' g- v
ans =1 %“除数”是正,“余数”就是正
8 d* k. C7 v8 G" g t, L! x; H9 n
>> mod(-5,2)
& F6 p2 V _6 Q+ T: N: ?) o
ans =1
$ ?; w* W# ^6 x6 J, m4 r
>> mod(5,-2)
9 c, c2 u9 @( r- S7 a: J1 ^
ans =-1 %“除数”是负,“余数‘就是负
8 M2 d* F F# p( b. V9 O8 ~
>> mod(-5,-2)
6 c6 N+ Y! [" z4 `/ }( V3 e
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
1 ^3 J4 j; p: l/ d8 _/ E* }
>> rem(5,2)
' `7 H* x+ t7 E0 V2 k4 V0 a
ans =1 %“被除数”是正,“余数”就是正
^+ E7 E1 x+ X
>> rem(5,-2)
' a. Y. L- u# i
ans =1
! s2 e8 Z8 z' ?; o% n2 B N
>> rem(-5,2)
* Y) {9 I1 }; g
ans =-1 %“被除数”是负,“余数”就是负
) H5 F7 x5 w6 o' J# @- O+ ?
>> rem(-5,-2)
2 M' K, y$ t1 ?3 X, n
ans =-1
$ h9 w: x( J: {3 G4 X, G
. {& h- Q2 T3 |* h$ k
" B. d* a' Z$ u
慢慢体会,两者确实不一样
$ ^9 k! ?' w, U% c2 U8 W
作者:
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
3 q( [" }3 W" u
帮你顶一下
+ E! j; t8 ^$ k: v" ^
谢谢啦 哈哈
作者:
挣未来
时间:
2012-7-9 02:09
留着,要用的时候再来看好了~~~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5