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位运算

位操作符的一些运算小技巧

位运算技巧

位运算的技巧