取模与取余的区别

  • 取余运算 在计算商值时 商值向0方向舍入;靠近0原则
  • 取模运算 在计算商值时 商值向负无穷方向舍入;尽可能让商值小的原则(不超多商值的最大值)
  • 假设有整数a和b,那么取模/取余运算可以分为两步运算:

  • 求整数商:c = a/b;
  • 计算模/余数:r = a - (c*b);
  • 总计算模/余数:a mod b = a - b[a/b] ([a/b]表示整数商)

例子

取模

简述商值 取模值
5 mod 3 = 25/3 = 1.66 商取小原则 商=15 - 3 * 1 = 22
-5 mod 3 = 1-5/3 = -1.66 商取小原则 商=-2-5 - (3 * -2) = 11
5 mod -3 = -15/-3 = -1.66 商取小原则 商=-25 - (-3 * -2) = -1-1
-5 mod -3 = -2-5/-3 = 1.66 商取小原则 商=1-5 - (-3 * 1) = 2-2

取余

简述商值 取余值
5 rem 3 = 25/3 = 1.66 商靠0原则 商=15 - 3 * 1 = 22
-5 rem 3 = -2-5/3 = -1.66 商靠0原则 商=-1-5 - (3 * -1) = - 2-2
5 rem -3 = 25/-3 = -1.66 商靠0原则 商=-15 - (-3 * -1) = 22
-5 rem -3 = -2-5/-3 = 1.66 商靠0原则 商=1-5 - (-3 * 1) = - 2-2

java 中 % 是取余运算;Python中 % 是取模运算

模的理解

“模”是指一个计量系统的计数范围;如时钟,12个整点为计算范围,则模为12;计算机也是一个计量机器,模为32位或者64位;

32位计算机正常理解 在模 范围内能表达的 有 [0, 2³²-1];那么负数该怎么表达呢,所以出现了补码;也就是 正数 + 负数 正好达到模的溢出阀值2³²;所以在计算机中负数是用补码方式表达的原因;

关于补码的例子:在12模的时钟中;假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法

  1. 倒拨4小时,即:10-4=6 (10-4) mod 12 = 6
  2. 顺拨8小时:10+8=12+6=6 (10+8)mod 12 = 6

在以12模的系统中,加8和减4效果是一样的;因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中11和1、10和2、9和3、7和5、6和6都有这个特性;共同的特点是两者相加等于模

“取模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数(取模);任何有模的计量器,均可化为加减法运算

5 mod 3 = 2 例子中;模 为 3;2 为取模的值

 

模算数可以在导入整数同余关系后,通过经典算数的运算法则来推导模运算的运算法则。若有两个正整数ab,并且二数的差值a − bn的整数倍数,我们就可以说ab在模n下同余。数学式表达为:

a≡b(mod n)

例如

38 ≡ 14 (mod 12)

因为38 − 14 = 24,是12的倍数。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值