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