本文共 515 字,大约阅读时间需要 1 分钟。
给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。 示例 1:输入:num = 5输出:2解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入:num = 1输出:0解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。 提示:给定的整数 num 保证在 32 位带符号整数的范围内。num >= 1你可以假定二进制数不包含前导零位。
位运算
异或运算的性质:a^ b=c 可以推出 a^c=bclass Solution { public int findComplement(int num) { int n=num; int t=0;//记录二进制有多少位 // String str = ""; while(n!=0){ // str = n%2+str; n = n/2; t++; } return num ^ (int)(Math.pow(2,t)-1); }}
转载地址:http://czxlf.baihongyu.com/