其他分享
首页 > 其他分享> > 476. 数字的补数

476. 数字的补数

作者:互联网

476. 数字的补数

给你一个 正 整数num,输出它的补数。补数是对该数的二进制表示取反。

示例 1:

输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。

示例 2:

输入:num = 1
输出:0
解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。
class Solution {
    public int findComplement(int num) {
        int highbit = 0;
        for (int i = 1; i <= 30; ++i) {
            if (num >= 1 << i) {
                highbit = i;
            } else {
                break;
            }
        }
        int mask = highbit == 30 ? 0x7fffffff : (1 << (highbit + 1)) - 1;
        return num ^ mask;
    }
}

标签:输出,数字,int,highbit,二进制,num,476,补数
来源: https://blog.csdn.net/weixin_41884690/article/details/120820961