学习状态压缩 必须要先搞懂位运算 这是集中位运算的符号与其作用。
名称
|
C/C++样式 |
Pascal样式 |
简记法则 |
按位与 |
& |
and |
全一则一,否则为零 |
按位或 |
| |
or |
有一则一,否则为零 |
按位取反 |
~ |
not |
是零则一,是一则零 |
按位异或 |
^ |
xor |
不同则一,相同则零 |
左移位 |
<< |
shl |
a<<k等价于a*2k |
右移位 |
>> |
shr |
a>>k等价于a/2k |
优先级:not>and>xor>or;
位运算的应用:
(1) 获取一个或多个固定为的值
假设x = 1010(10进制的10)
我们要获取从右边第二位的值,那么我们可以这样来获取
x&(1<<1)也就是
x: 1010
1<<1: 0010
x&(1<<1): 0010
这样我们就可以通过判断x&(1<<1)是否等于0来知道这一位是0还是1了。
x&(1<<n) 就是获取第n-1位的值。
(2) 把一个或多个固定为的值置为零
假设x = 1010(10进制的10)
我们要把从右边第二位的值置为零,那么我们可以这样来做
x&(~(1<<1))也就是
x 1010
~(1<<1) 1101
x&(~(1<<1)) 1000
x&(~(1<<n)) 就是把x的第n-1位变成0
位运算,布布扣,bubuko.com
位运算
原文:http://blog.csdn.net/zmx354/article/details/19930191