位运算

来源:互联网 发布:新津知艺术馆 编辑:程序博客网 时间:2024/06/07 23:43

位运算

(一)按位与&
(1)去一个数的指定位
n=1010 1100;
n=n&0000 1111;
n=0000 1100;
(2)使一个数的指定位置为0
n=1010 1100;
n=n&1111 0000;
n=1010 0000;
(二)按位异或^
n=1010 1100;
n=n^0000 1111;
n=1010 0011;

(三)按位或 |
n=1010 1100;
n=n|0000 1111;
n=1010 1111;

位运算符图解
这里写图片描述
具体使用部分如下:

求一个数二进制中1的个数

//求一个数的二进制中有多少个1int one(int x){    int count = 0;    while(x)    {        count ++;        x = x & (x - 1);    }    return count;}

检验一个数是否为2的N次方

//检验一个数是否为2的N次方void num(int x){    if(!(x&(x-1)))        cout<<"true"<<endl;    else        cout<<"flase"<<endl;}

不使用除法符号求两个数的平均值

//不使用除法符号求两个数的平均值int num(int x, int y){    return (x&y) + ((x^y) >> 1);}

不使用第三个变量交换a和b(a,b均为int)

//不使用第三个变量交换a和b(a,b均为int)void swap(int &x,int &y){    x = x ^ y;    y = x ^ y;    x = x ^ y;}
原创粉丝点击