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

数字的补数

时间:2022-12-10 14:33:53浏览次数:25  
标签:数字 temp 二进制 int num 补数 num1

数字的补数

一、题目描述

对于一个整数的二进制取反,再转换为十进制数,得到的这个数就是这个整数的补数。
示例1

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

示例2

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

二、解题思路
题目要求是将二进制中的数字,将0转为1,1再转为0。可以想到让原来的整数,与一个都为1的二进制数做一个位运算。即可得到答案。

三、解题方法

方法1(位运算)
将所给的整数num与一个全为1的二进制做位运算。这里有一个问题,布num的位数再32位之内。需要确定一个和num位数相同的全位1的二进制。
代码实现

class Solution {
    public int findComplement(int num) {
        int temp =1;
        int num1 = num;

        while( num1 >1){
            num1/=2;
            temp = (temp<<1)+1;
        }

        return num ^ temp;
    }
}

标签:数字,temp,二进制,int,num,补数,num1
From: https://www.cnblogs.com/zjjtt/p/16971547.html

相关文章