C/C++ 位运算总结

1.&运算

&运算常用于二进制的取位操作,例如一个数 x & 1 x \& 1 x&1 的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为 0 0 0表示该数为偶数,最末位为 1 1 1表示该数为奇数。

00101 & 11100 = 00100 00101\&11100=00100 00101&11100=00100

2.|运算

or运算常用于二进制特定位上的无条件赋值,例如一个数 x ∣ 1 x | 1 x1 的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成 0 0 0,对这个数 x o r 1 x or 1 xor1 之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。

00101 ∣ 11100 = 11101 00101 | 11100=11101 0010111100=11101

3.^异或

∧ \wedge 运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即 ( a ∧ b ) ∧ b = a (a \wedge b) \wedge b = a ab)b=a

00101 ∧ 11100 = 11001 00101 \wedge 11100=11001 0010111100=11001

4.~取反

n o t not not运算的定义是把内存中的 0 0 0 1 1 1全部取反。使用not运算时要格外小心,需要注意整数类型有没有符号。

5.<<(>>)左(右)移

x < < ( > > ) n x<<(>>)n x<<(>>)n相当于原值 × ( ÷ ) 2 n ×(÷)2^{n} ×(÷)2n

你可能感兴趣的:(C++,基本算法问题)