因读者总是搞混一些运算符的功能,所以在此归纳一下
-
异或运算符^
规则:两个参与运算的数,若为异(两数不同),则为1,两数相同则为0(二进制)
例: 1^ 1=0 ,0^ 0=0, 0^ 1=1
用途:翻转特定位数
例:X=70(1000110)Y=7(0000111)
Y可以把X的后三位翻转
X^Y=65(1000001)
异或是不进位的加法(X^Y<X+Y) -
按位与运算符&
其规则为:若两位同时为1,则为1,否则为0(在二进制的形式下运算)
例:0&0=0,0&1=0,1&1=1
用途:取一个数在二进制下想要取到的位数
例:X=10011101(二进制),想要取得X的后4位,则令Y=00001111
X&Y=00001101 -
按位或运算符|
规则:有真则真,无真则假
例:0|0=0,0|1=1,1|1=1
用途:因有真则真,所以可以对一个数的特定位置置1
例:X=10110000(二进制),想要把后四位置为1,则可以取Y=00001111
X|Y=10111111 -
左移运算符<<
原理:讲一个运算对象的二进制全部左移若干位,左边的二进制丢弃,右边补0(a=a<<2表示左移一位)
若左移时,舍弃的最高位不包含1,则该运算等价于乘法(a=a<<1 等价于a=a*2) -
右移运算符>>
根据左移运算符就不难知道右移的原理
每右移一位,相当于该数除以2