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

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

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

  模运算 大家都知道就是求余,比如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

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

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

驱动版本与硬件对应至关重要

驱动版本与硬件对应至关重要

一天,启惠 说机子不还原了,我一看,是上次做系统忘装还原卡驱动了。于是关机卸载还原卡,记得D盘里好像有个驱动,找了半天,才找到个,上面写的是“FOR3.0及以后”,也没太注意,就双击安装了。(还原卡是4.2的)然后重启安装还原卡。满以为好了,可是重启后,却发现还是提示要安装,不过版本先是变成了4.0...

彩虹(原51挂挂)评测

  超大的网盘和方便的网盘操作是最大的优点,而可更改的数字账号在有QQ铺垫的当前社会极具吸引性。  这是一个巧合,今天在“360软件管家”里面无意间发现了一个软件,叫“彩虹”,突然使我响起了前一阵子和 腾讯 闹得很凶的“彩虹显IP”。下意识间点开了简介,心里想着这个“彩虹”和“彩虹显IP”有关系吗?...

Visual C++ 2008 Express Edition下载(微软学生中心官网)

为了防止盗链检测,所以没加跳转,请直接将下列地址复制到“迅雷-新建”。  http://www.msuniversity.edu.cn/m_AdvancedMembers/downloadfile.aspx?username=cuiyi0@mscampus.cn&type=6  如果不能下载...

Visual C++ 2005 速成版(中文) 下载(微软学生中心官网)

  为了防止盗链检测,所以没加跳转,请直接将下列地址复制到“迅雷-新建”。  http://www.msuniversity.edu.cn/m_AdvancedMembers/downloadfile.aspx?username=cuiyi0@mscampus.cn&type=3  如果不能...

Visual C++ 2008 速成版(中文) 下载(微软官网)

  此为微软官网链接,请大家放心下载,并无需认证。其是VS2008,解压后可以根据需要选择安装。  http://download.microsoft.com/download/3/0/2/3025EAE6-2E15-4972-972A-F5B1ED248E85/VS2008ExpressWithS...

发表评论

访客

看不清,换一张

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