1<<n=,n<<1=2n
取出整数n在二进制表示下的第k位:(n>>k)&1
取出整数n在二进制表示下的第0~k-1位(后k位):n&((1<<k)-1)
把整数n在二进制表示下的第k位取反:n xor (1<<k)
对整数n在二进制表示下的第k位赋值1:n|(1<<k)
对整数n在二进制表示下的第k位赋值0:n&(~(1<<k))
'and' 与 &
'or' 或 |
'not' 非 ~ 表示二进制的所有数取反
'xor' 异或 ^(c++)
lowbit运算
定义为非负整数n在二进制表示下“最低为的1及其后边所有的0”构成的数值。
例如:n=10的二进制表示为,则lowbit(n)=2=
lowbit(n)=n&(~n+1)=n&(-n)