美文网首页
Leetcode476:数字的补数

Leetcode476:数字的补数

作者: 7468cfcb4aba | 来源:发表于2021-10-18 10:40 被阅读0次

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

    1.首先讲num循环除以二,求得num的二进制位数

    2.取相应位数位全一的数字temp

    3.将num与temp进行异或运算,即为补数。

    public int findComplement(int num) {

            int count = 0;

            long temp = num;

            while(temp!=0){

                temp = temp / 2;

                count++;

            }

            temp = (long)Math.pow(2,count) - 1;

            return (int)(num^temp);

        }

    ps:取temp的时候如果使用短整型,测试用例位数为32位数就会出现越界问题,所以采用长整型

    相关文章

      网友评论

          本文标题:Leetcode476:数字的补数

          本文链接:https://www.haomeiwen.com/subject/iyagoltx.html