Встречаю в коде конструкции вида
int index = 2;
if ((index & 1) == 1)
{..}
Никак не могу понять "сакральный смысл" использования такой конструкции, или это просто в силу привычки люди так пишут.
Это проверка на чётность/нечётность (конкретно в вашем примере на нечетность).
Суть в двоичном представлении числа, в котором самый младший бит является 2
в степени 0
, то есть это либо 1
, либо 0
. Вот если этот младший бит равен 1
, значит число — нечётное, а если он равен 0
— то число чётное.
Примеры:
34810
в двоичной – 1010111002
, последний бит 0
, число чётное.
34710
в двоичной – 1010110112
, последний бит 1
, число нечётное.
210
в двоичной 102
, чётное.
510
в двоичной 1012
, нечётное.
P.S. обратил внимание, что в заголовке вопроса указано int & int
, а не int & 1
, если же имеется ввиду именно int & int
, то у побитового and
более широкое применение.
&
- Логическая операция "И". Побитное умножение одного числа на другое. По сути приведенная выше конструкция означает умножение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть PDF фаил, в котором есть таблица с даннымиТаблица вида "Name - Data" и так в столбик
Написал интерфейс в XAMLДо этого пользовался только Windows Form
Создал модель (Code fluent):
Есть ли способ изменить значение внутри строки не переводя её в массив символов? Например "Машинная сила" в "Машинная пила"