常见位运算的总结

简介: 常见位运算的总结

一、基础位运算


       按位或: |        有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);满足结合率

相关文章
|
1月前
玩转位运算
玩转位运算
|
8月前
|
存储 Java
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1
38 0
|
1月前
|
C++
位运算
位运算“【5月更文挑战第23天】”
22 1
|
10月前
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
68 0
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
68 1
|
10月前
位运算专题(个人理解)
位运算专题(个人理解)
50 0
|
11月前
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
11月前
|
算法
位运算能做什么
位运算能做什么
41 0