位与:&it
操做:1 & 1 = 1; 1 & 0 = 0; 0 & 0 = 0;总结
特色:只有全是1的时候才是1,其余状况都是0.
总结:任何数和0位与就是0,和1位与没有变化,因此位与经常使用在清零上(清零用位与)。
位或:|
操做:1 | 1 = 1; 1 | 0 = 1; 0 | 0 = 0;
特色:只有全0的时候才是0,其余状况都是1.
总结:任何数和1位或就是1,和0位或没有变化,因此位或经常使用在置1上(置1用位或)。
位取反:~
操做:~1 = 0; ~0 = 1;
特色:1取反为0,0取反为1.
位异或:^
操做:1 ^ 1 = 0; 1 ^ 0 = 1; 0 ^ 1 = 1; 0 ^ 0 = 0;
特色:相同为0,不一样为1.
总结:任何数和1位异或会取反,和0异或没有变化(特定位要取反就用位异或)。
左移(<<)和右移(>>)
操做的时候要考虑有符号数(signed number)和无符号数(unsigned number)。
对于有符号数:左移的时候右侧补0;右移的时候左侧补符号位(正数符号位为0,则补0;负数符号位为1,则补1).
对于无符号数:左移的时候右侧补0;右移的时候左侧也是补0.
注意:咱们对寄存器进行赋值的时候用的都是无符号的数
某一位取反 &= ~
a &= ~b;
a ^= 1<<bit;