题目:
给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。
解法:
注意revert是将expectBit在0和1之间转换,而不是取反。
func hasAlternatingBits(n int) bool {
expectBit := 1 & n
for n > 0 {
if expectBit ^ (1 & n) == 1{
return false
}
n = n >> 1
expectBit = revert(expectBit)
}
return true
}
func revert(n int) int{
if n == 0 {
return 1
}
return 0
}