常见位运算的总结

简介: 常见位运算的总结

一、基础位运算


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

相关文章
|
6月前
玩转位运算
玩转位运算
|
1月前
|
机器学习/深度学习
位运算详解
本文介绍了位运算符及其基本操作,并通过几个例题详细解析了位运算的应用。内容包括左移`&lt;&lt;`、右移`&gt;&gt;`、按位取反`~`、与运算`&`、或运算`|`和异或运算`^`等运算符的使用方法。基本操作部分展示了如何检查和修改二进制位,以及异或运算的性质。例题部分则通过判定字符是否唯一、丢失的数字、两整数之和和消失的两个数字等问题,具体说明了位运算的实际应用技巧。
41 7
位运算详解
|
5月前
|
编译器 Linux C++
详细解读C++中的位运算总结
详细解读C++中的位运算总结
35 0
|
6月前
|
C++
位运算
位运算“【5月更文挑战第23天】”
40 1
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
90 1
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
90 0
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
存储
位运算及A+B
位运算及A+B