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 = 0100
5. 右移
运算符 >>
右移
运算符 >>
高位补 0
可以将一个对象的二进制向右移n
位,右边n
位丢弃,左边n
位补0
。比如,a = 1101
。
a >> 2 = 0011
Last updated