运算符 | 含义 | 说明 |
---|---|---|
<< | 左移 | 将操作数的各个位全部左移若干位,高位丢弃,低位补0 |
>> | 右移 | 将操作数的各个位全部右移若干位,低位丢弃,高位补 0 或 1 |
& | 与运算 | 有0出0,全1出1 |
| | 或运算 | 有1出1,全0出1 |
~ | 非运算(取反) | 空即是色,色即是空 |
^ | 异或 | 相异出1,相同出0 |
清零取反要用与,某位置一可用或
若要取反和交换,轻轻松松用异或
<<
相当于:*
int a, b; b = a << 3; // 相当于 b = a * 8
a &= ~(1 << k)
a |= (1 << k)
a = (a << k) | (a >> (sizeof(int)-k))
>>
用来把操作数的各个二进制位全部右移若干位,低位丢弃,高位补 0 或 1;如果数据的最高位是 0,那么就补 0;如果最高位是 1,那么就补 1。>>
相当于:/
int a, b; b = a >> 3;// 相当于除以 b = a / 8
a >> k & 1
a = a >> k | a << (sizeof(int)-k)
&
运算的两个位都为 1 时,结果才为 1,否则为 0isEven = (i & 1) == 0; // 等价于: (i % 2) == 0;
&
可相当于:%
num & (2^n - 1) // 等价于 :num % 2^n
if( a & 1 == 0 ) // 偶数 if( a & 1 == 1 ) // 奇数
a = a | (1 << k)
~
为单目运算符,右结合性,作用是对参与运算的二进制位取反,0 变成 1,1 变成 0y = ~x + 1;
a = a^b; b = a^b; a = a^b;
x = a ^ b ^ x; // 等价于 : if (x == a) { x = b; }else{ x = a; }
感谢阅读,如有错误,敬请见谅!!!