Skip to content

Latest commit

 

History

History
 
 

README.md

与(&) 或(|)非(~)异或(^)中基础规则总结:

与(&): x & 1 = x 衍生用法:1:获取二进制第x位的值(0 or 1) 2:比较奇偶 x为奇,则其二进制表示末尾为1,x&1=1,为偶,x&1=0 x & 0 = 0 衍生用法:将x中的某一位或者某几位 置0 x & x = x 或(|): x | 1 = 1 衍生用法:将x中的某一位或者某几位 置1 x | 0 = x x | x = x 非(~): x & ~x = 0 x | ~x = 1 x ^ ~x = 1s (全1) 异或(^): x ^ 0s = x x ^ 1s = ~x x ^ x = 0s c = a ^ b => a ^ c = b,b ^ c = a a^b^c = (a^b)^c = a^(b^c)

位运算(update/find指定位置)

获取第n位的值(0 or 1): (x >> n) & 1 获取第n位的幂值: x &(1 << n)

将第n位的值置为1: x | (1 << n) 将第n位的值置为0: x & (~(1 << n)) 思路:x & (111011111) = x & ~(000100000)

将最高位至第n位清0:x & ((1 << n)-1) 思路:x & (00011111) = x & (00100000 - 1) 将x右边n位清0: x & (~0 << n) 思路:x & 111000000

实战位运算

判断奇偶: x % 2 == 1(0) => x & 1 == 1(0) 整除2: x // 2 => x >> 1 (二分查找) 清零最低位的1:(N皇后中,表示该位置被占用) x = x & (x - 1) 例:8 & 7 = 1000 & 0111 = 0,8的最低位的1被清零 得到最低位的1:(N皇后中,得到一个没有被皇后占据的位置) x&-x