2011-03-09 43 views
2

我有2個位掩碼集合,1具有我想合併的權限,另一個集合具有我想要移除的位掩碼。紅寶石位打擊,如何執行添加劑和負面

對於添加劑,我只是「或」他們想:

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

如何刪除權限使用其他集合?

remove_masks.each do |x| 
    ??? 
end 

回答

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 
+0

感謝您使用irb問,這有助於我練習這個! – Blankman 2011-03-09 03:19:36

+0

不用擔心。它是如何工作的? – 2011-03-09 03:25:58

0

~(~a|b)是B的按位減法從

+0

我不認爲工作...'A = 11,B = 00, 〜(〜a | b)= 11' – 2011-03-09 03:18:56

+0

呃,什麼不行?我的答案在邏輯上等同於(a&(〜b)) – drewrobb 2011-03-09 03:29:29