标签:font int 输出 位置 find color dcom 一个 temp
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。
注意:
示例 1:
输入: 5
输出: 2
解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。
示例 2:
输入: 1
输出: 0
解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。
【思路】
如果我们能知道该数最高位的1所在的位置,就可以构造一个长度和该数据所占位置一样长的一个掩码mask,然后概述和mask进行异或即可。
1 public class Solution{ 2 public int findComplement(int num){ 3 int mask=1,temp=num; 4 while(temp>0){ 5 mask=mask<<1; 6 temp=temp>>1; 7 } 8 return num^(mask-1); 9 } 10 }
标签:font int 输出 位置 find color dcom 一个 temp
原文地址:https://www.cnblogs.com/kexinxin/p/10372441.html