動機
bitでフラグ管理してsetみたいなものを作りたい。
必要なbitオペレーション
- フラグが立っているかどうかの確認
(bit & 1<<i) != 0
- iビット目を立てる
bit | (1<<i)
- iビット目を消す
bit & ~(1<<i)
作ったもの
struct BitSet {
var bit: Int = 0
func contain(i: Int) -> Bool {
return (bit & 1<<i) > 0
}
mutating func insert(i: Int, raise: Bool) {
self.bit = raise ? bit | (1<<i) : bit & ~(1<<i)
}
}
参考