我有位 101 和 110。我想使用一些位运算符进行比较,忽略第一位,如 01 和 10。
例子:
I have:
101
110
===
01 & 10 <- How I want to consider
x00 <- The result I want
或者
10110
11011
=====
0110 & 1011 <- How I want to consider
x0010 <- The result I want
我如何在java中使用按位运算符来实现这一点?
细节:
- 第一位将始终为 1。
- 其他位是可变的。比较的双方将具有相同的位数。
- 我想检测如何在考虑其他位并忽略第一个位的情况下进行比较。
用例:
- 我有 2 个权限值。第一个是 5/101(需要的权限),第二个是 6/110(用户拥有的权限)。
- 排除第一个块,它总是 1,我想比较代表系统中某个权限规则的第三个块(使用按位)。
- “所需的权限”位掩码表示:
1
- 我用来考虑左侧填充零的始终固定值(除非有其他方法可以实现);0
- 另一个对此比较无用的权限规则(我们称之为权限 1);1
- 当前权限规则所需的权限(我们称之为权限 2)。
- “用户拥有的权限”是指:
1
- 要删除的固定值;1
- 代表用户对权限1的值;0
- 代表权限 2 的用户值。权限 2 的值为 1,但用户的值为 0,则不允许他执行所需的操作。相反,将允许执行该操作。
对于这种情况,任何更好的解决方案也将被视为正确答案。