`
jay_kid
  • 浏览: 65055 次
  • 性别: 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国家集训队论文《回归本源——位运算及其应用》,详细描述了位运算的众多巧妙用法,对于位运算的深入运用可以参考。

    N皇后问题(位运算,C语言版)

    位运算是一种在计算机内部进行快速计算的方法,它利用二进制表示来进行加减乘除以及逻辑操作。在N皇后问题中,位运算主要用来表示棋盘的状态和检测冲突。 首先,我们可以用一个整数来代表棋盘的一行,其中每一位...

    C语言编程技术实践 位运算及运用教学单元设计.doc

    掌握位运算的应用是教学的难点,这通常涉及在实际问题中如何巧妙地利用位运算提高程序效率。例如,位运算可以用于快速设置、清除和切换变量的特定位,这对于处理位标志、内存管理、优化算术运算等场景特别有用。此外...

    商业编程-源码-高精度运算函数库(大整数运算)位运算和指针的运用.zip

    在本压缩包中,"商业编程-源码-高精度运算函数库(大整数运算)位运算和指针的运用.zip" 提供了一个专门用于高精度计算的函数库,它巧妙地利用了位运算和指针技术来优化性能。下面将详细介绍这两个关键概念以及它们...

    CSAPP的datalab-位运算

    3. 位操作技巧:在位操作中,通过特定的位运算组合可以实现一些巧妙的功能,如快速判断一个数是否是2的幂次方。 三、实验步骤与解析 LAB2实验中,可能会涉及到以下内容: 1. 位操作实践:通过编写程序,实践使用...

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

    通过这种方式,我们可以使用SQL Server的位运算功能巧妙地解决多选查询问题,避免了复杂的字符串拼接和解析,提高了查询效率。这种方法不仅适用于SQL Server,还可以在其他支持位运算的数据库系统中应用,如MySQL、...

    ACM中的位运算 方格取数 公共子序列

    - **乘以2的幂次、除以2的幂次和取模2的幂次**:位运算可以快速完成这些计算,例如n表示乘以2的k次方,n&gt;&gt;k表示除以2的k次方,n&((2)-1)表示n对2的k次方取模。 6. **高级位运算**: - **位的输出**:可以使用位...

    6-杜瑜皓-位运算技巧与应用1

    10. **位运算的组合应用**: 通过巧妙地组合位运算,可以实现更复杂的操作,如查找、替换、计数、检查特定条件等。这在编程竞赛和算法设计中特别有用,因为它可以显著提高代码的执行速度。 总结来说,位运算技巧在...

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

    PHP作为广泛使用的服务器端脚本语言,提供了一种巧妙的方法,即利用位运算来实现这一目标。通过位运算,我们可以高效地组合和检查不同权限,而不需要创建复杂的逻辑结构。 首先,我们需要定义一系列代表不同权限的...

    calc_大整数_大整数运算_homee66_C++_压位_

    在这个项目中,开发者通过优化算法使得大整数的加减法可以在一秒钟内完成10的8次方级别的运算,而乘除模运算则能在同一时间内处理10的5次方级别的操作,显著提升了性能。 首先,我们来理解什么是大整数运算。在C++...

    算法心得-高效算法的奥秘(原书第2版)_带书签_高清_[位运算的奇技淫巧].pdf

    这本书通过丰富的实例和深入的分析,揭示了位运算如何在解决问题时展现出惊人的效率和巧妙。 1. **位运算基础**:书中首先介绍了位运算的基本概念,包括与(&)、或(|)、异或(^)、非(~)以及左移()和右移(&gt;&gt;)等操作。...

    有理数的混合运算用计算器进行运算PPT课件.pptx

    课件提到了在运算过程中可以巧妙运用运算律,比如加法交换律和结合律,乘法分配律等,以简化计算过程。 在实际的运算示例中,例如第一题114(-1)+225×5368,可以通过不同的方法求解,如直接运算或分步计算。这里...

    x86进制运算,巧妙

    总的来说,"x86进制运算,巧妙"这一主题涵盖了计算机底层编程的重要知识,包括x86汇编语言的使用、进制转换的实现以及程序设计的技巧。通过分析提供的文件,我们可以学习到如何在低级别的层面控制计算机进行复杂的...

    [宫水三叶的刷题日记]:位运算1

    这个问题可以使用位运算来巧妙解决。 一个常见的方法是利用哈希表,通过遍历数组计算每个元素出现的次数。但题目中提到的进阶要求是实现线性时间复杂度且不使用额外空间,这时位运算就派上了用场。我们可以创建一个...

    用位运算巧解元素出现次数问题1

    本题目的核心是利用位运算来寻找一个数组中出现次数为奇数的元素,这里具体涉及到的问题是如何巧妙地利用异或操作(XOR)来解决这类问题。 首先,我们要了解异或操作的基本性质:任何数与0异或都等于它本身;相同...

    Excel表格+Word文档各类各行业模板-单变量及双变量运算.zip

    本压缩包文件"Excel表格+Word文档各类各行业模板-单变量及双变量运算.zip"提供了一系列模板,帮助用户更有效地进行数据管理和计算。 首先,我们来探讨Excel中的单变量运算。单变量运算通常涉及对一个变量的计算,...

    单片机快速开方运算

    单片机快速开方运算是一种在有限硬件资源下进行高效计算平方根的技术,尤其适用于那些不支持浮点运算或乘除运算的微控制器,如STM8S系列。这种算法主要依赖于移位、加减法以及条件判断和循环结构,以实现对一个正...

Global site tag (gtag.js) - Google Analytics