一、按位与(&)运算符
按位与(&)运算符的规则是两个操作数的二进制值中,只有二者均为1,结果为1,否则为0。
int a = 5; // a的二进制表示为0101 int b = 3; // b的二进制表示为0011 int c = a & b; // c的二进制表示为0001,即1
在这个例子中,a和b进行按位与运算之后,结果为1。因为a和b的二进制值为0101和0011,按位与操作之后,得到的值为0001(仅有的一位均为1),转化成十进制之后,得到的结果为1。
二、按位或(|)运算符
按位或(|)运算符的规则是两个操作数的二进制值中,只有二者均为0,结果为0,否则为1。
int a = 5; // a的二进制表示为0101 int b = 3; // b的二进制表示为0011 int c = a | b; // c的二进制表示为0111,即7
在这个例子中,a和b进行按位或运算之后,结果为7。因为a和b的二进制值为0101和0011,按位或操作之后,得到的值为0111(其中有三位均为1),转化成十进制之后,得到的结果为7。
三、按位异或(^)运算符
按位异或(^)运算符的规则是两个操作数的二进制值中,只有其中一个是1,结果为1,否则为0。
int a = 5; // a的二进制表示为0101 int b = 3; // b的二进制表示为0011 int c = a ^ b; // c的二进制表示为0110,即6
在这个例子中,a和b进行按位异或运算之后,结果为6。因为a和b的二进制值为0101和0011,按位异或操作之后,得到的值为0110(其中有两位均为1),转化成十进制之后,得到的结果为6。
四、取反(~)运算符
取反(~)运算符是一元操作符,用于对操作数的二进制位按位取反。
int a = 5; // a的二进制表示为0101 int b = ~a; // b的二进制表示为1010,即-6
在这个例子中,a进行取反操作之后,结果为-6。因为a的二进制值为0101,按位取反操作之后,得到的值为1010(符号位为1,表示负数),转化成十进制之后,得到的结果为-6。
五、左移位(<<)运算符
左移位(<<)运算符的规则是将左侧的操作数向左移动指定的位数,右侧的操作数指定了需要移动的位数。
int a = 5; // a的二进制表示为0101 int b = a << 2; // b的二进制表示为010100,即20
在这个例子中,a进行左移位操作,并指定需要左移的位数为2。因为a的二进制值为0101,左移2位之后,得到的值为010100(转化成十进制之后,得到的结果为20)。
六、右移位(>>)运算符
右移位(>>)运算符的规则是将左侧的操作数向右移动指定的位数,右侧的操作数指定了需要移动的位数。在右移位操作中,如果原来的值为正,则在左侧插入0;如果原来的值为负,则在左侧插入1。
int a = 20; // a的二进制表示为10100 int b = a >> 2; // b的二进制表示为00101,即5
在这个例子中,a进行右移位操作,并指定需要右移的位数为2。因为a的二进制值为10100,右移2位之后,得到的值为00101(转化成十进制之后,得到的结果为5)。
总结:
Java位运算符可以用来对二进制位进行运算操作。在实际编程中,位运算符常用于对底层数据进行处理,例如文件、网络、嵌入式开发等领域均会用到位运算。