Introduction - C++ Bitwise Operations
先导篇 - C++位运算
位运算作为C++的特性之一,由于更接近底层,执行速度比正常的四则运算符快(对于降低时间复杂度十分有效)。对于一些特殊的判断或运算,如果能灵活运用位运算可以达到预想不到的效果。
知识回顾
1. 与(&)运算的规则
与(&)运算的规则有 0 则 0 ,全 1 才 1
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0两位同时为1,结果才为1。
2. 或(|)运算的规则
或(|)运算的规则有 1 则 1 ,全 0 才 0
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0有一位为1,结果就为1。
3. 异或(^)运算的规则
异或(^)运算的规则相同为 0 ,相异为 1
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0两位不同,结果才为1。
4. 左移运算符 <<
左移运算符 <<低位补 0
可以将一个对象的二进制向左移n位,左边n位丢弃,右边n位补0。比如,a = 1101。
a << 2 = 01005. 右移运算符 >>
右移运算符 >>高位补 0
可以将一个对象的二进制向右移n位,右边n位丢弃,左边n位补0。比如,a = 1101。
a >> 2 = 0011Last updated