位运算符的种类有7中,分别是:“按位与”运算符(&)、“按位或”运算符(|)、“按位异或”运算符(^)、“按位取反”运算符(~)、“右移位”运算符(>>)、“左移位”运算符(<<)、“无符号右移位”运算符(>>>)。接下来我们详细介绍一下他们各自的作用。
1.“按位与”运算符(&):“按位与”运算符“&”为双目运算符,其运算法则是:先将参与运算的数据转化为二进制数,然后低位对齐,高位不足补0,如果对应的二进制位都是1,则结果为1,否则结果为0.
例:int a=3; //0000 0011
int b=5; //0000 0101
int c=a&b; //0000 0001
按照“按位与”的原则,当对应的数字都是1时,得到的结果才是1,所以我们得到c=a&b,c=1。
2.“按位或”运算符(|):按位或“运算符”|“为双目运算符,其运算法则是:先将参与运算的数据转化为二进制数,然后低位对齐,高位不足补0,如果对应的二进制数只要有一个是1,则结果为1,否则结果为0.
例:int a=3; //0000 0011
int b=5; //0000 0101
int c=a|b //0000 0111
按照“按位或”的原则,当他们有一个数字数1时,得到的结果就会是1,所以我们得到c=a|b,c=7。
3.“按位异或”运算符"^”:“按位异或”运算符“^”为双目运算符,其运算法则是:先将参与运算的数据转化为二进制数,然后低位对齐,高位不足补0,如果对应的二进制数相同,则结果为0,否则结果为1.
例:int a=3; //0000 0011
int b=5; //0000 0101
int c=a^b; //0000 0110
按照“按位异或”的原则,从右往左,第一位两个数字都是1,所以对应数字是0,后两位分别是0和1,1和0,所以对应数字都是1。
4.”按位取反“运算符”~“:”按位取反“运算符”~“为单目运算符,其运算法则是:先将参与运算的数据转化为二进制数,然后把各位的1改为0,0改为1.
例:int a=5; //0000 0101
int b=~a;
b=0000 1010;
按照“按位取反”的原则,1变为0,0变为1,所以我们得到b的值为10.
5.”右移位“运算符”>>":“右移位”运算符“>>"为双目运算符,其运算法则是:先将参与运算的数据转化为二进制数,然后所有位置的数统一向右移动对应的位数,低位移除(舍弃),高位补符号位(正数补0,负数补1)
例:int a=3; //0000 0011
int b=a>>1; //0000 0001
b的结果是1
6."左移位”运算符“<<”:“左移位”运算符“<<”为双目运算符,其运算法则是:先将参与运算的数据转化为二进制数,然后所有位置的数统一向左移动相应的位数,高位移除(舍弃),低位的空补0.
例:int a=3; //0000 0011
int b=a<<1; //0000 0110
b的结果是6
7.“无符号右移位”运算符“>>>”:“无符号右移位”运算符“>>>》为双目运算符,其运算法则是:先将参与运算的数转化为二进制数,然后所有位置的数统一向右移动相应的位数,低位移除(舍弃),高位补0.
例:int a=3; //0000 0011
int b=a>>>1; //0000 0001
b的结果是1
如果有小伙伴不懂可以私信我哦。
记得给个赞。