常见位运算的总结

简介: 常见位运算的总结

一、基础位运算


       按位或: |        有1就是1

       按位与: &        有0就是0

       按位异或:^        无进位相加(或相同为0,相异为1)

       左移:<<

       右移:>>

       按位取反:~


二、给一个数n,确定它的二进制中的第x位是0还是1


       将n右移x位,再按位与1,结果是1就为1,是0就为0,如图:


三、将一个数n的二进制表示的第x位修改成1


       将1左移x位,在按位或1,如图:


四、将一个数n的二进制位表示的第x位修改成0


       将1左移x位,再取反,取反后的结果按位于n,如图:


五、位图思想


       类似hash表,让一个数的二进制为为1或者0进行标记,如图:


六、提取一个数(n)二进制表示中最右侧的1(lowbit)


       n & (-n),负数的二进制位要按位取反后再+1,然后按位与上n,就能得到最右侧的1,如图:


七、干掉一个数n的最右侧的1


       n & (n - 1),n-1能得到最右侧的1左边都为1,当前为0,再按位与上 n - 1,就能干掉最右侧的1,如图:


八、位运算的优先级


       直接不管,想谁先算就把谁括号括起来。


九、异或运算的规律


       n ^ 0 = n;任何与0异或的数等于它本身。

       n ^ n = 0;自己和自己异或等于0。

 a ^ b ^ c = b ^ c ^ a;满足交换律

       (a ^ b) ^ c = a ^ (b ^ c);满足结合率

相关文章
|
5月前
玩转位运算
玩转位运算
|
4月前
|
编译器 Linux C++
详细解读C++中的位运算总结
详细解读C++中的位运算总结
25 0
|
5月前
|
C++
位运算
位运算“【5月更文挑战第23天】”
35 1
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
84 0
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
82 1
位运算专题(个人理解)
位运算专题(个人理解)
66 0
|
算法
位运算能做什么
位运算能做什么
51 0
|
存储
位运算及A+B
位运算及A+B
|
存储
【位运算】怕位运算?有我你何足畏惧
【位运算】怕位运算?有我你何足畏惧
72 0