zoukankan      html  css  js  c++  java
  • 另外一种高效地判断奇数和偶数的方法

    在我们日常的编程当中,常常会遇到判断某个整数属于奇数还是偶数的情况。 一般我们都是用的取模的操作,前几天在网上看到了一种称作快速有效的判断做法,利用2进制进行判断。 

    大家都知道,奇数的最低位一定是1,而偶数的最低位一定是0.所以我们可以根据这个特性,让需要判定的整数和1进行“与”运算,这样就只留下了原数的最低位,然后直接判断这个数等于1还是等于0即可。 

    实现代码如下:

     

      class  Program
    
      {
    
           static   void  Main( string [] args)
    
           {
    
               bool  s  =  OddEven.IsEven( 4 );
    
              Console.WriteLine(s);
    
              s  =  OddEven.IsOdd( 55877554 );
    
              Console.WriteLine(s);
    
          } 
    
      } 
    
      
    
      ///   <SUMMARY> 
    
      ///  判断一个整数是奇数还是偶数。
    
      ///   </SUMMARY> 
    
      class  OddEven
    
      {
    
           static   private   int  s  =   1 ;
    
      
    
           static   public   bool  IsEven( int  a)
    
           {
    
               return  ((a  &  s)  ==   0 );
    
          } 
    
      
    
           static   public   bool  IsOdd( int  a)
    
           {
    
               return   ! IsEven(a);
    
          } 
    
      }

    本人做了个测试来证明这个结论,使用取模的方式和使用与操作的方式比较,各运行5,000,000,000次(数据太小看不出差距),前者的执行所 花时间是后者的8倍.理论上这种方式的的确效率高一些,也算是一种有高效简洁的方式,但是要体现出差距来就需要至少上亿次的操作才能看出,对于平时只使用 那么几次的代码来说,几乎可以忽略不计这两者的差别了.但是使用与操作的话,如果不加注释,很难从代码里看出来作者想要得到一个整数的奇偶性结果,不利于 代码阅读.

     

        现在的年代硬件不是问题,在可读性的要求大于代码性能要求(性能也不能差得离谱)的时候,还是少用为好.但是作为开拓视野的一种方式也未尝不可

  • 相关阅读:
    js 自动下载函数
    集群中用Memcached来实现session共享
    PDO防注入原理分析以及使用PDO的注意事项
    侧边栏
    helloworld
    angularjs 获取地址传参
    ionic 上拉加载更多&瀑布流加载&滚动到底部加载更多 主意事项
    亿级Web系统搭建——单机到分布式集群
    php 模拟表单提交
    R语言curve绘图函数
  • 原文地址:https://www.cnblogs.com/Scissors/p/2644979.html
Copyright © 2011-2022 走看看