与运算(AND)- &
规则:两位都是1,结果才是1,否则为0
代码登录后可见
或运算(OR)- |
规则:至少有一位是1,结果就是1
代码登录后可见
异或运算(XOR)- ^
规则:两位不同为1,相同为0
代码登录后可见
非运算(NOT)- ~
规则:0变1,1变0
代码登录后可见
重点注意:这是最容易出错的地方!
在计算机中,整数是用补码存储的,取反操作是对补码取反。
移位 (<<, >>)
左移 (<<):高位丢弃,低位补0。等效于乘以2n。
右移 (>>):对于有符号数,高位补符号位(算术右移);对于无符号数,高位补0(逻辑右移)。等效于除以2n(向下取整)。
🚨 注意!
- 逻辑运算混淆:&&, || 是逻辑运算(结果true/false),&, | 是位运算(结果整数),不要用混。
- 移位 vs 乘除:移位虽然快,但注意溢出。左移可能把符号位移丢,导致负数变正。右移负数时,结果仍是负数(补符号位)。
- 优先级低:位运算的优先级通常低于算术运算(如+, -),最好多用括号保证顺序。