位运算符
Java中定义了一些位运算符,它们适用于整数类型,如:long、int、short、char以及byte。
我们通过位运算符可以实现整数的位操作。这里我们假设a = 60; b = 30;
现在我们来看看它们的二进制格式及位运算结果:
a = 0011 1100
b = 0000 1101
---------------------------------------------------------
a & b = 0000 1100
a | b = 0011 1101
a ^ b = 0011 0001
~a = 1100 0011
按位与(&
)
位运算符”&”用于将两个整数的二进制形式进行逐位”与”操作(包括符号位),也就是将两个二进制数对应位上的数进行如下计算:如果两个数对应位上的数都为1,则结果数对应位上的数为1,否则为0。
按位或(|
)
位运算符”|”,与”&”恰好相反,用于将两个整数的二进制形式进行逐位”或”操作(包括符号位),也就是将两个二进制数对应为上的数进行如下计算:如果两个数对应位上的数至少有一个为1,这结果数对应位上的数位1,否则为0。
按位异或(^
)
位运算符”^”用于将两个整数的二进制形式进行逐位”异或”操作(包括符号位),也就是将两个二进制数对应位上的数进行如下计算:如果两个数对应位上的数有且仅有一个为1,则结果数对应位上的数为1,否则为0。
按位取反(~
)
位运算符”~”用于将指定的整数的二进制形式包括符号位在内进行逐位取反,如果原来的位上是1,就置为0,如果原位上是0,就置为1。
按位右移(>>
)
位运算符”>>”用于将指定整数的二进制形式全部向右移动指定的位数(包括符号位),移动后,右侧超出范围的部分直接舍弃,左侧空出来的部分全部用符号位的数字来补充。
按位左移(<<
)
位运算符”<<”用于将指定整数的二进制形式全部向左移动指定的位数(包括符号位),移动后,左侧超出范围的部分直接舍弃,左侧空出来的部分全部用0来补充。
按位无符号右移(>>>
)
位运算符”>>>”用于将指定整数的二进制形式全部向右移动指定的位数(包括符号位),移动后,右侧超出范围的部分直接舍弃,左侧空出来的部分全部用0来补充。
{$ activeFileHint $}