当前位置:首页 > 技术实录 > 正文内容

通过位运算(不用模运算符%)求余

心光日记2012-10-04 00:00:00技术实录158

  模运算 大家都知道就是求余,比如9/8,它的余数就是1,通过9%8可以快捷的求出余数.

  但是这里我为大家介绍一种不通过求模运算符%来求余数的方法.但是他有一个前提,a/b的除数b必必须为2的n次方.也就是说除数b必须是

  2的一次方1

  2的二次方4

  2的三次方8

    ……

    ……

  只有是这样的一种情况,这种方法才是正确的.下来我为大家介绍这种实现,有两种方法.首先为大家介绍一个公式,这是比较好运用的一种.

 

  我们默认除数的8,也就是2的三次方,公式是这样的 a&(8-1)

  现在,我们可以来算一下.默认值a=9,b=8.小括号的内的值为8-1=7.

  9的二进制表现:1001

  7的二进制表现:0111

  9&8的结果值  :0001=1

  也就是说,余数为1,结果是正确的.

  为了证实这个公式的真是可靠,我们可以a=14,继续晕算一次.

  14的二进制表现:1110

  7的二进制表现  :0111

  9&8的结果值    :0110=6

  显而易见,结果也是正确的,大家再缓缓a和b的值来证实一下!

  

  另外一种方式是通过位移运算符来计算.初始值还是a=9,b=8.

  a-((a>>3)<<3)先右移3位,再左移三位,然后a减去移位后的值.

  大家可能要问,为什么是3位呢,因为b是8的,2的3次方是8,所以是移动三位.

 

  好了,两种方式已经介绍清楚了,有什么问题欢迎留言,谢谢!^_^

扫描二维码推送至手机访问。

版权声明:本文由心光日记发布,如需转载请注明出处。

本文链接:https://www.mindlight.cn/post/148.html

标签: 百度空间
分享给朋友:

“通过位运算(不用模运算符%)求余” 的相关文章

VB脚本刷百度空间访问量

  大家有没有为少得可怜的访问量感到不爽呢?或者为自己辛辛苦苦写的心血文章显示的浏览数总是“零”觉得无奈呢?我相信是有的。所以,今天我就教大家巧用VB脚本刷空间访问量,全自动。原理就是自动打开页面,产生访问量,然后关闭,并重复操作,且不影响当前正在做的任何工作。要是哪天访问少了,起码小小安慰一下受伤...

第一次封包分析

  今天中午宿舍都去上网了,再加上最近在小研究WG方面的知识、顺便留意一下万象2008的免费,所以实在是忍不住了,然后就来了。  首先,一不小心,又让我征服了一个Netbar,而且极具里程碑式,因为校园附近网吧所有的计费系统那个都是这个。  第二,今天第一次真正的分析了数据包,也许算不上分析,在高人...

第二节_系统热键

  我们在使用G中,经常会先开G,然后开游戏,在进入游戏后按下某一个键,此时G界面就会显现出来,而且无论我们在干什么,只要我们按下那个键,界面就会出来,然后进行设置自动补血,打怪范围等等。被按下的那个键,就是热键,这就是本节要介绍的,系统热键及其使用  系统热键,通常是几个控制键的组合,或控制和字符...

致歉

  首先在这里,向默默关注这里的大家致歉,由于最近网络故障问题,导致网络无法连接,而无法按时更新,希望大家能原谅!  第二个事情是,近期发现大家对此分类文章关注度很高,我在此深表感谢。所以征求一下大家意见,有无必要建立一个论坛,但是我要说明的是,论坛要有足够高的人气,不然便没有什么大意义,因为这类论...

外挂学习告示

  呃。。年终于基本过完了。  恍惚了这好多天,什么书都没摸。  在外挂学习方面,鉴于大家先后不一,知识面宽广程度不同,还有之前构思错误的原因,以及个人学习进度。决定一切从头开始,即放弃之前的“从WINDOWS编程开始”,而改为“从C++语言学习开始”,一步一步走。  想到以后的长期打算,就重新开了...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。