首页 > 其他分享 >计算机取模运算

计算机取模运算

时间:2022-10-22 10:47:47浏览次数:71  
标签:取模 12 运算 10 计量 计算机

一、模的概念

模实际指的就是一个范围,下面摘抄自百度百科的一段话:

“模”是指一个计量系统的计数范围,如过去计量粮食用的斗、时钟等。计算机也可以看成一个计量机器,因为计算机的字长是定长的,即存储和处理的位数是有限的,因此它也有一个计量范围,即都存在一个“模”。如:时钟的计量范围是0~11,模=12。在计算机中表示n位的计算机计量范围是 0~2^n-1,模= 2的n次幂,“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算 。就是取反后加1。
假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨2小时,即8-2=6;另一种是顺拨10小时,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。若用一般公式可表示为:a-b=a-b+mod=a+mod-b。对“模”而言,2和10互为补数。实际上,以12为模的系统中,11和1,8和4,9和3,7和5,6和6都有这个特性,共同的特点是两者相加等于模。对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111,若再加1成100000000(9位),但因只有8位,最高位1自然丢失(相当于丢失一个模)。又回到了 00000000,所以8位二进制系统的模为2^8 。
。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码 。

从上述的解释中可发现一个结论: 在某个数值范围内的加法运算可在MOD值的介入下转换为减法运算,当然也可由减法运算转换为加法运算。这因此也正好引出来计算机的补码。

二、Java中取余%和取模Math.floorMod运算

 

 

 

总结

  1. 取余,遵循尽可能让商向0靠近的原则。取模,遵循尽可能让商向负无穷靠近的原则
  2. 符号相同时,两者不会冲突;符号不同时,两者会产生冲突。
  3. 取余运算结果的符号和 被除数 一致,取模运算结果的符号和 除数 一致

 

应用

 

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

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

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

 

参考连接:https://blog.csdn.net/HD243608836/article/details/124767350

标签:取模,12,运算,10,计量,计算机
From: https://www.cnblogs.com/zhouguang2/p/16815512.html

相关文章

  • 2022-2023-1 20221414《计算机基础和程序设计》第八周学习总结
    作业信息班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:面向对象,面向过程,顶......
  • 移位运算用法总结
    参考链接:https://blog.csdn.net/qq_34364995/article/details/80544465比如1<<left,看怎么移位的1的二进制为0000000000000001,比如当left=2时,即1要左移2位,变成000000......
  • Golang基础-运算符
    运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等运算符分为:算术运算符:+、-、*、/,%,++,--赋值运算符:=、+=、-=、*=、/=、%=关系运算符:==、!=、>、<、>=、<=......
  • 计算机网络知识点总结-第三章:数据链路层
    0.本章思维导图:数据链路层使用的信道:点对点信道:使用一对一的点对点通信方式广播信道:使用一对多的广播通信方式,过程比较复杂,需要专用的协议来协调1.使用点对点信道的......
  • 2022-2023-1 20221312 《计算机基础与程序设计》第八周学习总结
    作业信息班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:面向对象,面向过程,顶点,......
  • 2022-2023-1 20221408《计算机基础与程序设计》第八周学习总结
    第八周学习总结作业信息这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业的要求在哪里:https://www.cnblogs.com/rocedu/p/9577842......
  • 计算机网络知识点总结-第二章:物理层
    0.本章思维导图:1.物理层的基本概念物理层的功能:怎样在连接各种计算机的传输媒体上传输数据比特流,屏蔽不同传输媒体和通信手段的差异规程:用于物理层的协议传输媒体接口......
  • 浅谈怎样学好计算机专业(上)
    1自我介绍全民制作人们大家好,我是练习时长两年半的个人练习生BarryYan,喜欢唱、跳、Coding、羽毛球、写作,Music!因为近期在业余时间看了一些书和文章,而且也都让自己颇有些......
  • 浅谈怎样学好计算机专业(下)
    4怎样高效的学习基础知识&专业技术4.1基础知识**基础知识(建议:学习知识的同时构建自己的知识体系)**:(1)结合专业实践(学数据结构:用代码敲出来,学网络:动手抓包、组网)(2)广泛探......
  • java语言中的运算符
    java语言中的运算符java语言支持如下运算符算术运算符:+,-,*,/,%,++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)......