Что такое XOR swap?

Middle
235 просмотров
AFK Offer AI

XOR swap — трюк для обмена двух переменных без третьей: a ^= b; b ^= a; a ^= b. Работает из-за свойств XOR: a^a=0, a^0=a. На практике в Go это бесполезно — a, b = b, a делает то же самое чище и компилятор оптимизирует оба варианта одинаково. XOR swap — классический вопрос для понимания побитовых операций. Ловушка: не работает если a и b указывают на одну ячейку памяти (a^a=0, оба обнуляются). В Go это невозможно для обычных переменных, но возможно со слайсами: swap(s, i, i).

Следующий вопрос

Что такое lock contention?