文章目录
一、位运算基础
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作,由于位运算直接对内存数据进行操作,无需转换成十进制,因此使用位运算的处理速度很快。
基本运算有与、或、异或、取反、左移、右移
&
按位与:如果两个相应的二进制位都为1,则该位的结果值为1,否则为0;
|
按位或:两个相应的二进制位中只要有一个为1,该位的结果值为1;
^:
按位异或:若参加运算的两个二进制位值相同则为0,否则为1(找出数组中唯一只出现一次的数字,其余皆出现两次);
~
取反:~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1
<<
左移:用来将一个数的各二进制位全部左移N位,右补0
>>
右移:将一个数的各二进制位右移N位,低位被舍弃,对于无符号数高位补0
二、位运算技巧
1. 判断整型的奇偶性
if((x & 1) ==0)
// 偶数
else // 奇数
2. 判断第n位是否为1
if(x & (1 << (n-1)))
//第n位为1
else //第n位为0并设置为1
3. 第n位设置为1
y = x | (1 << (n-1));
4. 第n位设置为0
y = x & ~(1 << (n