取模运算的理解和应用

软件开发过程中,总会遇到取余,取模,取整的计算或者思想,这里小结一下。

取模和取余,这两个运算在真整数的时候是一个概论,在负整数进行除法运算时不同。符号:“ % ”。

取整:即求商。符号:“ / ”。

取模和取余的区别

  • 取余运算,在计算商值时,商值向0方向舍入,靠近0原则。
  • 取模运算,在计算商值时,商值向负无穷方向舍入;尽可能让商值小的原则(不超多商值的最大值)。
  • 例子:

取模

简述商值 取模值
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

模的理解

“模” 是指一个计量系统的计数范围;如时钟,12个整点为计算范围,则模为12;计算机也是一个计量机器,模为32位或者64位;例:5 mod 3 = 2例子中,模为3,2为取模的值。

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

例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:
          一种是倒拨4小时,即:10-4=6
          另一种是顺拨8小时:10+8=12+6=6
          在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替.
          对“模”而言,8和4互为补数.实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性.共同的特点是两者相加等于模.
          对于计算机,其概念和方法完全一样.n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失.又回了00000000,所以8位二进制系统的模为2(8). 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了.把补数用到计算机对数的处理上,就是补码.

计算机中取模的应用思想

取模的本质是:取模的值,必定会模的范围内;所以,计算机领域引用该特性,使元素路由算法不超出边界,并有规则存放。

思路:首先确定模(范围);元素取模,使元素有规则的落入模的范围内容器中。

应用:hashMap,桶排序,数据库分表,分布式节点路由算法,循坏队列判断是否队满((tail+1)%n==head)等。

  • 27
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值