Go
Bitwise Operations in Go
Recieve mask of flag N
mask := 1<<N
Recieve a full mask of 0b11111 of N flags
fullMask := 1<<N - 1
Check if flag is set
if flags&mask > 0 {
// set
}
Toggle a flag is set
flags ^= mask
Get Lowest Bit
lowestBit := flags & -flags
Check only 1 bit is set in any position
if flags&(flags-1) == 0 {
// only one bit is set
}
Iterate over Flags
remainingBits := flags
for remainingBits != 0 {
// get lowest bit
maskWithLowestBit := flags & -flags
// flip off lowest bit
remainingBits ^= lowestBit
// do work with mask
}
Sorting masks by # of flags set
count := bits.OnesCount16(flags)