Number Complement Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer. You could assume no leading zero bit in the integer’s binary representation. Example 1:
Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.Example 2:
Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.总体思路:对输入数字取反,但是数字前面的0不取反,故要知道数字最高位,并用与1亦或取反的技巧。代码如下:
#include<iostream> #include<vector> using namespace std; class Solution { public: int findComplement(int num) { int mask = 1, temp = num; while (temp>0) { mask = mask << 1; temp = temp >> 1; } int a=num^(mask - 1); cout << a; return num^(mask - 1); } }; int main() { Solution n; int i; cin>>i; n.findComplement(i); }