zoukankan      html  css  js  c++  java
  • C++关于二进制位操作小结

    #include <iostream>
    using namespace std;
    //二进制位逆序。
    int Grial(int x)
    {
        int n = 32;
        int count = 0;
        while (n--)
        {
            count|= ((x&0x1) << n);
            x = ((unsigned)x >> 1);
        }
        return count;
    }
    int main()
    {
        cout << Grial(1) << endl;
        return 0;
    }
    
    
    #include <iostream>
    using namespace std;
    //二进制位中的奇偶位互换。
    int Grial(int x)
    {
        int sum1 = x & 0x55555555;
        int sum2 = x & 0xaaaaaaaa;
        sum1 <<= 1;
        sum2 >>= 1;
        return sum1 | sum2;
    }
    int main()
    {
        cout << Grial(6) << endl;
        return 0;
    }
    
    
    #include <iostream>
    using namespace std;
    //求两个数的和。

    int Grial(int x, int y) { if (!y)return x; //int ret = x^y; //-1%2=-1; int sum = x^y; int num = ((x&y)<<1); return Grial(sum,num); } int main() { cout << Grial(3, 5) << endl; return 0; } #include <iostream> using namespace std; //推断一个数是不是2的n次方。 bool Grial(int x) { return (x&(x - 1)) == 0; } int main() { cout << Grial(4) << endl; return 0; } #include <iostream> using namespace std; //求二进制中1的个数。 int Grial(int x) { int count = 0; while (x) { x = x&(x - 1); count++; } return count; } int main() { cout << Grial(15) << endl; } #include <iostream> using namespace std; //求平均值。 int Grial(int x,int y) { return (x&y) + ((x^y) >> 1); } int main() { cout << Grial(20, 48) << endl; return 0; } #include <iostream> using namespace std; //求平均值。 int Grial(int x,int y) { return x - (x - y) / 2; } int main() { cout << Grial(3,9) << endl; return 0; }

  • 相关阅读:
    5、流程控制
    4、字典和元祖
    3、列表操作
    2、字符串和数据类型
    1.标识符练习
    使用xpath提取页面所有a标签的href属性值
    网页提取所有邮箱
    正则表达式
    提取包含QQ的文本为QQ邮箱
    python继承小demo
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7048146.html
Copyright © 2011-2022 走看看