int a = 5; // 二进制:0101 int b = 3; // 二进制:0011
// 按位与 int result1 = a & b; // 结果:0001(十进制1)
// 按位或
int result2 = a | b; // 结果:0111(十进制7)
// 按位取反 int result3 = ~a; // 结果:...11111010(补码表示)
int a = 5; // 二进制:0101 int b = 3; // 二进制:0011 int result = a & b; // 结果:0001(十进制1)
// 定义权限常量
int READ = 1; // 二进制:0001
int WRITE = 2; // 二进制:0010
int EXECUTE = 4; // 二进制:0100
// 用户权限设置 int userPermissions = READ | WRITE; // 同时具有读和写权限
// 权限检查 boolean canRead = (userPermissions & READ) != 0; boolean canExecute = (userPermissions & EXECUTE) != 0;
// 动态添加权限 userPermissions |= EXECUTE; // 添加执行权限
// 动态移除权限
userPermissions &= ~WRITE; // 移除写权限
// 适合逻辑运算符的场景 boolean isLoggedIn = true; boolean hasPermission = false; boolean canAccess = isLoggedIn && hasPermission;
// 适合位运算符的场景 int flags = READ | WRITE; boolean canRead = (flags & READ) != 0;
// 方法一:逐位检查 public static int hammingWeight1(int n) {
int count = 0;
while (n != 0) {
count += (n & 1);
n >>>= 1;
}
return count;
}
// 方法二:利用n & (n-1)技巧 public static int hammingWeight2(int n) {
int count = 0;
while (n != 0) {
n &= (n - 1);
count++;
}
return count;
}