476. 数字的补数

package mainimport "fmt"func findComplement(num int) int {i := 1for i <= num {i = i<<1}return i - num - 1}func main() {fmt.Println(findComplement(5))}

1 5的二进制是101 取反就是010 实际上就是101和111的异或运算
2 111的求解过程就是获取5最高为1总位数3的全为1的的过程
func findComplement(num int) int {tmp := numn :=1for tmp>0 {n=n<<1tmp=tmp>>1}n=n-1return num^n}
