Ruby比特敲打,如何执行加法和否定

时间:2011-03-09 03:07:46

标签: ruby bit-manipulation

我有2个位掩码集合,1个具有我想要组合的权限,而另一个集合具有我想要删除的位掩码。

对于添加剂,我只是'或'他们喜欢:

permissions = 0
add_masks.each do |x|
 permissions |= permissions
end

如何使用其他集合删除权限?

remove_masks.each do |x|
    ???
end

2 个答案:

答案 0 :(得分:6)

您需要使用permissions &= ~mask

irb > permissions = 0
 # => 0 
irb > permissions |= 512
 # => 512 
irb > permissions |= 256
 # => 768 
irb > permissions &= ~1
 # => 768 
irb > permissions &= ~256
 # => 512 
irb > permissions &= ~512
 # => 0 

答案 1 :(得分:0)

~(~a|b)是从

中逐位减去b