我有2個位掩碼集合,1具有我想合併的權限,另一個集合具有我想要移除的位掩碼。紅寶石位打擊,如何執行添加劑和負面
對於添加劑,我只是「或」他們想:
permissions = 0
add_masks.each do |x|
permissions |= permissions
end
如何刪除權限使用其他集合?
remove_masks.each do |x|
???
end
我有2個位掩碼集合,1具有我想合併的權限,另一個集合具有我想要移除的位掩碼。紅寶石位打擊,如何執行添加劑和負面
對於添加劑,我只是「或」他們想:
permissions = 0
add_masks.each do |x|
permissions |= permissions
end
如何刪除權限使用其他集合?
remove_masks.each do |x|
???
end
你要使用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
~(~a|b)
是B的按位減法從
我不認爲工作...'A = 11,B = 00, 〜(〜a | b)= 11' – 2011-03-09 03:18:56
呃,什麼不行?我的答案在邏輯上等同於(a&(〜b)) – drewrobb 2011-03-09 03:29:29
感謝您使用irb問,這有助於我練習這個! – Blankman 2011-03-09 03:19:36
不用擔心。它是如何工作的? – 2011-03-09 03:25:58