markdown 位运算技巧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 位运算技巧相关的知识,希望对你有一定的参考价值。
# 位运算技巧
## 按位与
__运算规则__
```
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
```
__使用技巧__
- `0`与任何(也就0或1)'被与数'都得0
- `1`与任何'被与数'都得'被与数'自身
__使用案例__
- 将第5个标志位设置为0(不论第5位是否为0):`0x10111100 & 0x11101111 = 0x10101100`
- 将所有标志位清0:`0x11111111 & 0 = 0`
## 按位或
__运算规则__
```
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
```
__使用技巧__
- `0`与任何(也就0或1)'被或数'都得'被或数'自身
- `1`与任何'被或数'都得1
__使用案例__
- 将第5个标志位设置为1(不论第5位是否为1):`0x01000011 & 0x00010000 = 0x01010011`
- 判断奇偶:`n&1=0`为偶数,否则奇数
## 按位异或
__运算规则__
```
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
```
__使用技巧__
- `0`与任何(也就0或1)'被异或数'都得'被异或数'自身
- `1`与任何'被异或数'都得'被异或数'反数(这里说明下反数的定义:1的反数是0,0的反数是1)
- 任何数与0异或都得数本身 `n^0=n`
- 任何数与自身异或都得0。`n^n=0`
__使用案例__
- 两数字交换:`a^=b,b^=a,a^=b`
- 计算绝对值:`int j = n >> 31, (n ^ j) - j`
- 与-1异或相当于取反。`n^-1=~n`
以上是关于markdown 位运算技巧的主要内容,如果未能解决你的问题,请参考以下文章
ACM中的位运算技巧
位运算简介及实用技巧:基础篇[转]
技巧总结java位运算
位操作符的一些运算小技巧
位运算技巧
位运算的技巧