174k views
5 votes
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.

User Squeegee
by
4.9k points

1 Answer

4 votes

Answer:

var findComplement = function(num) {

var start = false;

for (var i = 31; i >= 0; --i) {

if (num & (1 << i)) {//find the leftmost hightest bit 1 and start from there

start = true;

}

if (start) {

num ^= (1 << i);

}

}

return num;

};

var findComplement = function(num) {

var bits = num.toString(2);

var complement = '';

for(var i=0;i<bits.length;i++)

{

complement += (bits[i]==1?0:1);

}

return parseInt(complement,2);

};

Step-by-step explanation:

The javascript code above would accept a number in the variable complemnt and using the parseint keyword, it converts it to a binary value of that number.

Each bit is converted from the least to the most significant bit, then it is returned to the find compliment function and converted back to an integer.

User Courcelan
by
5.3k points