在另一个字段中为1时将位设置为0的最有效方法
本文关键字:方法 有效 设置 字段 另一个 1时 | 更新日期: 2023-09-27 18:22:14
我的系统将权限跟踪为两个位字段,允许和拒绝。当拒绝中设置了一个位时,在确定用户权限时,允许中的相应位必须设置为0。
也就是说,它一定是这样的:
110101 (allow)
011001 (deny)
= 100100 (result)
我目前正在循环每个比特并进行比较,但我想知道这是否可以更优雅地表达和更快地执行。
这不是逐位XOR吗?
(110101 ^ 011001) & 011001 = 100100
假设result
位字段表示"允许的操作",我认为这应该是一个具有反转deny
:的逐位AND
result = allow & ~deny
我想它会和Pranav的答案一样快,因为它还涉及两个操作,但如果你能预先计算~deny
值,它可能会更快。就我个人而言,我也觉得这个解决方案更容易理解。