`
jay_kid
  • 浏览: 63831 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

巧妙的位运算及模运算

 
阅读更多

原帖:http://www.lgsee.com/?p=47

输入2的n次方:
如果突然要你输入2的19次方,你是不是还要想一下呢?敲个524288多累啊。用位运算:1 < < 19又快又准。

乘除2的倍数:
千万不要用乘除法,非常拖效率。只要知道左移1位就是乘以2,右移1位就是除以2就行了。
比如要算25 * 4,用25 << 2就好啦。

判断偶数:
a % 2取模是最常用的判断方法之一。这样要用到除法运算,不好。实际上,还是用位运算解决:a & 1。效果和a % 2是一样的,但是要快得多。

对2的倍数取模:
类似上面的方法。对2的倍数取模,只要将数与2的倍数-1做与运算就可以了。如:
a % 8 = a & (8-1)
节省乘除法可以提高效率。

判断一个整数是否是处于 0-65535 之间(常用的越界判断):
用一般的 (a >= 0) && (a <= 65535) 可能要两次判断。
改用位运算只要一次:
a & ~((1 << 16)-1)
后面的常数是编译时就算好了的。其实只要算一次逻辑与就行了。

算掩码:
比如一个截取低6位的掩码:0×3F
用位运算这么表示:(1 << 6) - 1
这样也非常好读取掩码,因为掩码的位数直接体现在表达式里。

还有,做一个循环限定的时候可以用模. 比如只需要0-2的不停循环 for( int i=0 ; i<3; i=(++i)%3 )

 

分享到:
评论
1 楼 sp42 2013-03-17  
学习了,谢谢!

相关推荐

    回归本源——位运算及其应用

    摘自2014国家集训队论文《回归本源——位运算及其应用》,详细描述了位运算的众多巧妙用法,对于位运算的深入运用可以参考。

    位运算.docx

    位操作篇共分为基础篇和...在实际编程中,如果能巧妙运用位操作,完全可以达到四两拨千斤的效果,正因为位操作的这些优点,所以位操作在各大IT公司的笔试面试中一直是个热点问题。因此本文将对位操作进行如下方面总结:

    PHP巧妙利用位运算实现网站权限管理的方法

    首先我们先定义4个常量来设定四种权限: ===================================== ...A用户拥有ADD-UPD-SEL-DEL四个权限,用位或运算计算A的权限总值 $a_all=ADD|UPD|SEL|DEL;//$all=15 可以注意到这个值

    x86进制运算,巧妙

    这是用x86汇编写的一个计算机器,可完成各进制之间的转换,而且巧妙!

    WPS文字中表格公式运算巧妙使用.docx

    WPS文字中表格公式运算巧妙使用.docx

    集合交并运算处理

    该C++算法较巧妙的完成了对集合的操作,包括交、并、比较相等; 并可完成对任意元素个数、对任意元素种类的运算

    通过SQL Server的位运算功能巧妙解决多选查询方法

    项目中很多业务对象的数据表中都具有Status字段,有人使用int型保存Status,有人使用varchar型

    简单模型计算机的设计.doc

    系统的完整性体现在DVCC系列机与学生常见到的简单计算机大体相同,其主要组成与 运行方式和PC机差不多,该系列机是一台硬软件相对完整、配置巧妙合理的完整的计算 机系统,通过它能体现出重要教学内容、能完成主要...

    利用Matlab进行不定积分运算示例巧妙至极.docx

    。。。

    利用Matlab进行不定积分运算示例巧妙至极.pdf

    。。。

    在张量模型中切割并加入操作环

    作为强制性的下一步,我们在本文中讨论如何为构成双陪集的每个连接的规范不变算子提供适当的名称,这对于巧妙地表达维拉索罗约束的树-代数一般化是必需的。 这个问题超出了与排列组有关的枚举问题本身,这迫使我们...

    fastmod:一个CC ++头文件,用于在64位硬件上进行快速的32位除法运算(和除数测试)

    如果除数在编译时是已知的,则编译器可以巧妙地用乘法和移位替换除法。 在哈希基准测试中,我们的简单C代码可以击败最新的英特尔处理器(Skylake)上最先进的编译器(例如LLVM clang,GNU GCC)。 进一步阅读: ,...

    中国剩余定理在RSA算法中应用的研究详细实验

    中国剩余定理对于提高RSA算法的模幂乘运算效率有显著作用,被广泛地应用在加速私钥解密和签名的运算上。在本文中,就中国剩余定理如何提高RSA算法的速度给出详细的描述。但是,直接使用中国剩余定理是不安全的,容易...

    基于51单片机的简易计算器设计

    硬件说明 使用stc89c52为主控芯片,1602进行显示,36个按键和3个led灯,使用micro-usb5V进行供电。...简介:这是一个简易计算器,将实现加减乘除混合运算、三角函数、乘方开方等基本运算,满足基本的计算需求。

    iOS计算器的算法技术

    iOS计算器的原理涉及了多个层面的技术,从用户界面的设计到内部计算的逻辑,都体现出了编程的巧妙和技术的精湛。 首先,从用户界面的角度来看,iOS计算器采用了直观且易用的设计。用户可以通过点击屏幕上的数字和...

    leetcode面试题56 – I. 数组中数字出现的次数

      别问我为什么会这题,只能告诉你我之前看过,一直觉得位运算的题都很巧妙,没见过确实很难想出来。从本题的初级版本的开始吧。   一个整型数组 nums 里除一个数字之外,其他数字都出现了两次。要求时间复杂度...

    N皇后问题C语言算法实现

    N皇后问题,C语言高效算法实现,巧妙通过位运算处理各个皇后摆放位置,运行效率比普通算法高出很多。

    ZYZMZM#LeetCode#136. 只出现一次的数字1

    示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4/* 算法思想:巧妙使用位运算解决,根据异或运算的性质,将所有数字异

Global site tag (gtag.js) - Google Analytics