操作符
原码 反码 补码
todo
java 中的位运算
在 Java 中,位运算符直接对整数类型的操作数的二进制位进行操作。以下是 Java 中常用的位运算符:
按位与(AND)
&
: 对两个数的每一位进行逻辑与操作。只有在两个相应位都是 1 时,结果才是 1,否则是 0。javaint a = 60; // 60 = 0011 1100 int b = 13; // 13 = 0000 1101 int c = a & b; // c = 12 = 0000 1100
按位或(OR)
|
: 对两个数的每一位进行逻辑或操作。只要有一个相应位是 1,结果就是 1。javaint a = 60; // 60 = 0011 1100 int b = 13; // 13 = 0000 1101 int c = a | b; // c = 61 = 0011 1101
按位异或(XOR)
^
: 对两个数的每一位进行逻辑异或操作。如果两个相应位值相同,则结果为 0,否则为 1。javaint a = 60; // 60 = 0011 1100 int b = 13; // 13 = 0000 1101 int c = a ^ b; // c = 49 = 0011 0001
按位取反(NOT)
~
: 对一个数的每一位进行取反操作。即 1 变为 0,0 变为 1。javaint a = 60; // 60 = 0011 1100 int c = ~a; // c = -61 = 1100 0011 (in two's complement form)
左移位
<<
: 将操作数的二进制表示向左移动指定的位数,从右边补 0。javaint a = 3; // 3 = 0000 0011 int c = a << 2; // c = 12 = 0000 1100
右移位
>>
: 将操作数的二进制表示向右移动指定的位数。对于正数,从左边补 0,对于负数,从左边补 1。javaint a = -8; // -8 = 1111 1000 (in two's complement form) int c = a >> 2; // c = -2 = 1111 1110 (in two's complement form)
无符号右移
>>>
: 将操作数的二进制表示向右移动指定的位数,从左边补 0。和有符号右移不同,无论正负都从左边补 0。javaint a = -8; // -8 = 1111 1000 (in two's complement form) int c = a >>> 2; // c = 1073741822 = 0011 1111 1111 1111 1111 1110
位运算在底层编程、图形处理、加密算法等领域非常有用。它们的操作速度快,因为处理器直接在硬件级别上对位进行操作。但是,位运算的代码可读性比较差,因此在不追求极致性能的普通应用程序开发中使用较少。在使用时,应确保清楚地注释代码,以提高其可维护性。