首先,这里的操作符,是关于2进制单位的操作符,不再是我们日常使用的操作符单位(10进制)。所以我们要想理解这些运算符,就得将要计算的值由10进制变为2进制。
<<操作符
这是左移操作符,要想正确地使用,还得引入三个定义,为 <<后面的数字(整数)代表向左移动几位
正数的原码、反码、补码完全一样,只有负数需要按照以上规则计算。
而<<操作符就是利用补码操作想左移动整数位(不能为负数),这样我们就可以得到5补码是0000 0101,然后5<<1为00001000。而想得到值的话还得将其变为原码,为8。
切记不能这样表示5<<-1 这句话有歧义,你难道还能向左边移动-1位吗?
>>操作符
是和<<操作符是一样操作的,只是方向不同了而已。切记不能这样表示5>>-1。这句话有歧义,你难道还能向右边移动-1位吗?
&操作符
&叫做按位与操作符,还是同理,要想求7&2等于多少,我们先得将7补码,2补码求出来
7补码为00000111
3补码为00000011
& 我们可以这样理解,每一位相乘就可以了,而不是直接乘(整体)。还有一种方法就是运用数学方法,1&0=0,0&0=0,1&1=0,0&1=0。是不是通俗易懂
7&3=00000011。就是这么来的。
每一位只要有0就是0
^操作符
^叫做按位异或操作符 同理,不过这个每一位不能相乘的。可以用数学方法
1^0=1 0^1=1 0^0=0,1^1=0。 口诀是每一位相同就得0,不相同为1
| 操作符
这个操作符叫做按位或操作符。口诀是有1得1,两位都为0得0。
数学方法 1^0=1 0^1=1 0^0=0,1^1=1。
&= ^= |=操作符
这三个可以化为一个类型的。例如C&=2。就是C=C&2。C^=2为C=C^2. C|=2为C=C|2。………
>>= <<=操作符
也是同理得C>>=2。就是C=C>>2。C<<=2为C=C<<2。