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)
}
posted @ 2025-08-27 20:12  余越  阅读(14)  评论(0)    收藏  举报