Сложность: easy
Дополнение целого числа — это число, которое получается при замене всех 0 на 1 и всех 1 на 0 в его двоичном представлении.
Например, целое число 5 в двоичной системе — "101", и его дополнение — "010", что соответствует целому числу 2. Дано целое число num, верните его дополнение.
Пример:
Input: num = 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.
👨💻 Алгоритм:
1⃣Вычислите длину в битах входного числа: l=⌊log 2 (num)⌋+1.
2⃣Постройте битовую маску из 1-битов длины l: bitmask=(1≪l)−1.
3⃣Верните результат операции XOR числа и битовой маски: num⊕bitmask num⊕bitmask.
😎 Решение:
class Solution {
findComplement(num) {
let bitmask = num;
bitmask |= (bitmask >> 1);
bitmask |= (bitmask >> 2);
bitmask |= (bitmask >> 4);
bitmask |= (bitmask >> 8);
bitmask |= (bitmask >> 16);
return bitmask ^ num;
}
}Ставь 👍 и забирай 📚 Базу знаний
