1218. 补数
给定一个正整数,输出它的补数。补数是将原先数字的二进制表示按位取反,再换回十进制后得到的新数。
样例
样例1:
输入:5
输出:2
说明:5的二进制表示为101(不包含前导零),它的补数为010,因此你需要输出2。
样例2:
输入:1
输出:0
说明:1的二进制表示为1(不包含前导零),它的补数为0,因此你需要输出0。
注意事项
-
给定的整数保证在32位有符号整数的范围内。
-
假设一个正整数的二进制表示不包含前导零。
public class Solution {
/**
* @param num: an integer
* @return: the complement number
*/
public int findComplement(int num) {
// Write your code here
int h=Integer.highestOneBit(num);
h=(h<<1)-1;
// System.out.println(h);
return h^num;
}
}