GitHub
Задачи с собеседований: без посредников
Имеется два числа. Можно ли поменять их местами без использования дополнительной переменной?
Решить задачу можно, используя арифметические или побитовые операции. Арифметические проще, но есть одно «но».
Пусть у нас есть A и B.
A = A + B
B = A – B // После этого B становится A, т.к. получаем (A + B) – B = A
A = A – B
В этом решении есть большой минус: возможность переполнения.
Поэтому лучше использовать поразрядную операцию XOR.
A = A ^ B
B = A ^ B
A = A ^ B
Как это работает: в первой строке мы получаем маску на различающиеся биты, в этих разрядах будут стоять единички. Далее производится сброс и выставление нужных бит для обмена значений.
На примере будет наглядней. Рассмотрим обмен чисел 5 и 9.
A = 0101 ^ 1001 = 1100
B = 1100 ^ 1001 = 0101
A = 1100 ^ 0101 = 1001
-
Аналитика магазинов4 недели назад
Мобильный рынок Ближнего Востока: исследование Bidease и Sensor Tower выявляет драйверы роста
-
Видео и подкасты для разработчиков3 недели назад
Разбор кода: iOS-приложение для управления личными финансами на Swift. Часть 1
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.47
-
Разработка4 недели назад
100 уроков о том, как я довёл своё приложение до продажи за семизначную сумму

