C# 在另一个字段中为1时将位设置为0的最有效方法

C# 在另一个字段中为1时将位设置为0的最有效方法,c#,bit-manipulation,C#,Bit Manipulation,我的系统将权限跟踪为两个位字段:允许和拒绝。当在“拒绝”中设置位时,在确定用户权限时,必须将“允许”中的相应位设置为0 也就是说,它必须是这样的: 110101 (allow) 011001 (deny) = 100100 (result) 我目前正在循环每一位并进行比较,但我想知道这是否可以更优雅地表达和更快地执行。这不是按位异或吗 (110101 ^ 011001) & 011001 = 100100 假设结果位字段表示“允许的操作”,我认为这应该是按位的,并带有一

我的系统将权限跟踪为两个位字段:允许和拒绝。当在“拒绝”中设置位时,在确定用户权限时,必须将“允许”中的相应位设置为0

也就是说,它必须是这样的:

   110101 (allow)
   011001 (deny)
=  100100 (result)

我目前正在循环每一位并进行比较,但我想知道这是否可以更优雅地表达和更快地执行。

这不是按位异或吗

(110101 ^ 011001) & 011001 = 100100

假设
结果
位字段表示“允许的操作”,我认为这应该是按位的,并带有一个反向的
拒绝

result=allow&~deny


我想它的速度会和以前一样快,因为它还涉及两个操作,但是如果您可以预计算
~deny
值,它可能会更快。就个人而言,我也觉得这个解决方案更容易理解。

请描述您对每个位执行的操作。