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

Sam*_*Sam 0 c# bit-manipulation

我的系统将权限跟踪为两个位域,允许和拒绝.如果在拒绝中设置了某个位,则在确定用户权限时,必须将allow中的相应位设置为0.

即它必须是这样的:

   110101 (allow)
   011001 (deny)
=  100100 (result)
Run Code Online (Sandbox Code Playgroud)

我目前正在循环每一位并做一个比较,但我想知道这是否可以更优雅地表达和更快的表现.

Pra*_*dhi 7

这不是一个按位异或吗?

(110101 ^ 011001) & 011001 = 100100
Run Code Online (Sandbox Code Playgroud)