21 lines
280 B
Go
21 lines
280 B
Go
package q201
|
|
|
|
func rangeBitwiseAnd(left int, right int) int {
|
|
ret := left & right
|
|
for i := ret + 1; i < right; {
|
|
ret &= i
|
|
if ret == 0 {
|
|
return 0
|
|
}
|
|
|
|
// Find first non-zero bit
|
|
t := 1
|
|
for i|t != i {
|
|
t <<= 1
|
|
}
|
|
i += t
|
|
}
|
|
return ret
|
|
}
|
|
|
|
var _ = rangeBitwiseAnd
|