leetcode1009-十进制整数的反码
题目描述
- 给定一个非负整数,返回它的二进制取反后对应的十进制数
示例
输入:5
输出:2
输入:7
输出:0
输入:10
输出:5
题解
- 思路
- 方式一,直接模拟
- 方式二,取反后会变成负数,需要想办法去掉前导 1。可以用 原码的最高位-1 做一个遮罩,与上反码就是答案
func bitwiseComplement(n int) int {
if n == 0 { return 1 }
cnt := 0
for i := n; i > 0; i >>= 1 { cnt ++ }
return ^n & (1 << cnt - 1)
}

浙公网安备 33010602011771号