您的位置:首页 > 编程语言 > C语言/C++

位运算及其应用

2014-03-25 19:01 239 查看
位运算的优点之一是高效,而且它能在处理一些问题时使代码变得非常简洁

位运算操作符见下表

优先级运算符用法描述
1~~expr将expr每位翻转 0变1,1变0
2<<expr<<n将expr向左移动n位 左舍弃右补0 相当于乘以2的n次方
2>>expr>>n将expr向右移动n位 左补0(拷贝插入符号位)右舍弃 相当于除以2的n次方
3&expr1&expr2若expr1和expr2的相同位上都为1则该位结果为1 否则为0
4^expr1^expr2若expr1和expr2的相同位上不同则该位结果为1 否则为0
5|expr1|expr2若expr1和expr2的相同位上都为0则该位结果为1 否则为0
此外还有<<=,>>=,&=,^=,|=这些复合赋值运算符=

与位运算相关的技巧与应用

1.计算 n 与 2的m次方 的乘积

n<<m;


2.判断n的奇偶(奇数返回1,偶数返回0)

n&1;


3.不用中间变量交换两个整数

void swap (int *a, int *b)
{
(*a) ^= (*b) ^= (*a) ^= (*b);
}


4.判断n是否为2的整数冥

n > 0 ? (n & (n - 1)) == 0 : false;


5.相关位操作

n|=(1<<m);//将n二进制的第m位置1
n&=~(1<<m);//将n二进制的第m位置0
n^=(1<<m);//将n二进制的第m位翻转
bool jud=n&(1<<m);//判断n的第m位是否为1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  学习笔记 c c++