Сложность: 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 {
func findComplement(_ num: Int) -> Int {
var bitmask = num
bitmask |= (bitmask >> 1)
bitmask |= (bitmask >> 2)
bitmask |= (bitmask >> 4)
bitmask |= (bitmask >> 8)
bitmask |= (bitmask >> 16)
return bitmask ^ num
}
}Ставь 👍 и забирай 📚 Базу знаний
