位运算
符号 | 描述 | 运算规则 |
---|---|---|
& | 与 | 两个位都为1时,结果才为1。0&0=0 0&1=0 1&0=0 1&1=1 |
| | 或 | 两个位都为0时,结果才为0。0|0=0 0|1=1 1|0=1 1|1=1 |
^ | 异或 | 两个位相同为0,相异为1。0^0=0 0^1=1 1^0=1 1^1=0 |
~ | 取反 | 0变1,1变0。~1=0 ~0=1 |
<< | 左移 | 所有位左移若干位,高位丢弃,低位补0。(用法:a=a<<3) |
>> | 右移 | 所有位右移若干位,对无符号数,高位补0;有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) |
p.s.1.右移的数学意义:右移一位相当于除2,右移n位相当于除以2的n次方
2.机器里存的是补码,是直接用补码进行计算的
3.正数的原码、补码、反码都一样;负数的补码是反码加1