1、C语言中的 >>= 意思为:右移后赋值
代码示例为:
x = 8;
x >>= 3;
右移后结果为:00000000 00000000 00000000 00000001
2、C语言中的 <<= 意思为:左移后赋值
代码示例为:
x = 8;
x <<= 3;
左移后赋值结果为:00000000 00000000 00000000 01000000
3、C语言中的 &= 意思为:按位与后赋值
代码示例为:
x = 0x02;
x &= 0x01;
按位与后的结果为:0x00
4、C语言中的 ^= 意思为:按位异或后赋值
代码示例为:
x = 0x02;
x ^= 0x01;
按位异或的结果为:0x03 等同于0011
5、C语言中的 |= 意思为:按位或后赋值
代码示例为:
x = 0x02;
x |= 0x01;
按位或的结果为:0x03 等同于0011
6.
1<<i是把1左移i位,每次左移以为就是乘以2,所以1<<i的结果是1乘以2的i次方
i<<1就是把i左移一位,即i乘以2,假如i=5,最后结果就是5*2=10
至于为什么左移一位是乘以2,这是运算器内部机理,说起来就更多了,计算机做乘法运算的时候不是一个个的相加,而是用移位来实现的。>>这个符号是右移,与左移相反,右移是除以2.
7.
<<是按位左移运算,~是按位取反运算,=是赋值运算。
P2=~(1<<i)的意思是把1换成二进制数,然后左移i位,再按位取非,将结果赋给P2,等价于P2=(~(1<<i))。
比如i为3。那么P2= ~(1<<i) = ~(1<<3) 。
先按1个字节来看,1的二进制为00000001,左移3位得到00001000。取反得到11110111,即十六进制的F7。
如果整数为4个字节,那么P2= ~(1<<3) = 0xFFFFFFF7。