zoukankan      html  css  js  c++  java
  • 位运算的一些练习

    class Compare {
    public:
        int Flip(int c)
        {return c^1;//按位异或
        }
        int GetSign(int c)//非负为1,负为0.
        {
            return Flip((c>>31)&1);//右移 左侧补符
        }
        int getMax(int a, int b)
        {
            int c=a-b;//a-b>=0 返回a 否则返回b,这种方法可能会溢出
            int as=GetSign(a);
            int bs=GetSign(b);
            int cs=GetSign(c);
            int sam=Flip(as^bs);//1.判断a b是否同号
            if(sam)
                return cs?a:b;//a b异号
            else
                return (as-bs)?a:b;
        }
    };

    using namespace std;
    class Swap {
    public:
        vector<int> getSwap(vector<int> num) 
        {
            num[0]=num[0]^num[1];
            num[1]=num[0]^num[1];
            num[0]=num[0]^num[1];
            return num;
        }
    };

    class OddAppearance {
    public:
        vector<int> findOdds(vector<int> arr, int n)
        {
            vector<int> res;
            int check1=0;//经过一次遍历异或之后,得到的是两个只出现一次的数字的异或和
            for(int i=0;i<n;i++)
                check1=check1^arr[i];
    
            int k=0,temp=check1;//从左到右第一个为1的bit位
            while(!(temp&1))
            {
                k++;
                temp>>=1;
            }
    
            //根据bit位是否为1把数组分为两个部分
            int help=pow(2.0,k),check2=0;
            for(int i=0;i<n;i++)
                if(arr[i]&help)
                    check2=check2^arr[i];
            check1=check1^check2;
            res.push_back(check1<check2?check1:check2);
            res.push_back(check1>check2?check1:check2);
            return res;
        }
    };

    class OddAppearance {
    public:
        int findOdd(vector<int> A, int n) 
        {
            int temp=0;
            for(int i=0;i<n;i++)
                temp=temp^A[i];
            return temp;
        }
    };

    布隆过滤器:(可以精确地代表一个集合,精确地判断某一元素是否在此集合中,精确程度由用户自己设计)

      应用场景:

    1. 网页黑名单系统
    2. 垃圾邮件过滤系统
    3. 爬虫的网址判断重复系统
    4. 容忍一定程度的失误率
    5. 堆空间要求较严格

     

  • 相关阅读:
    魔兽登录系统
    航班信息查询预订
    第六章
    嵌套.
    嵌套
    Mysql
    第二章
    Java
    HTML-表格-列表-结构标记-表单
    HTML语言
  • 原文地址:https://www.cnblogs.com/tianzeng/p/11279623.html
Copyright © 2011-2022 走看看