简介:本文将带你全面了解Java中的位运算符,包括基本概念、种类、应用场景及实际案例。无论你是初学者还是资深开发者,相信都能从中收获。
在Java中,位运算符是直接在整数的二进制位上进行操作的运算符。这些操作包括位与(&)、位或(|)、位异或(^)、位非(~)、左移(<<)、有符号右移(>>)、无符号右移(>>>)等。位运算符通常用于优化代码性能,特别是在处理大量数据或进行底层系统编程时。
位与运算符会将两个数的二进制位进行逐位与操作,只有当两个对应的二进制位都为1时,结果位才为1。
例如:
int a = 60; // 0011 1100
int b = 13; // 0000 1101
int c = a & b; // 0000 1100
位或运算符会将两个数的二进制位进行逐位或操作,只要两个对应的二进制位中有一个为1,结果位就为1。
例如:
int a = 60; // 0011 1100
int b = 13; // 0000 1101
int c = a | b; // 0011 1101
位异或运算符会将两个数的二进制位进行逐位异或操作,当两个对应的二进制位不同时,结果位为1。
例如:
int a = 60; // 0011 1100
int b = 13; // 0000 1101
int c = a ^ b; // 0011 0001
位非运算符会对一个数的二进制位进行逐位取反操作,即0变为1,1变为0。
例如:
int a = 60; // 0011 1100
int b = ~a; // 1100 0011
左移运算符会将一个数的二进制位向左移动指定的位数,右侧空出的位用0填充。
例如:
int a = 60; // 0011 1100
int b = a << 2; // 0111 1000,即240
有符号右移运算符会将一个数的二进制位向右移动指定的位数,左侧空出的位用符号位填充(正数填充0,负数填充1)。
例如:
int a = 60; // 0011 1100
int b = a >> 2; // 0000 1111,即15
int c = -60; // 1100 0011
int d = c >> 2; // 1111 1111,即-15
无符号右移运算符会将一个数的二进制位向右移动指定的位数,左侧空出的位总是用0填充,无论原数是否为负数。
例如:
int a = 60; // 0011 1100
int b = a >>> 2; // 0000 1111,即15
int c = -60; // 1100 0011
int d = c >>> 2; // 0111 1111,即31
```java
int permissions = 0;
permissions |= 1 << 2; // 赋予第3个权限
boolean hasPermission = (permissions &