Проверка нечетности через битовые операции

268
23 мая 2022, 02:00

Есть статический метод:

public class Application
{
    public static bool IsOdd(int i)
    {
        return ((i & 1) == 1);
    }
}

Объясните пожалуйста как работает эта строка: return ((i & 1) == 1); Понимаю что она возвращает true или false, & тоже понятно что такое, но как работает код в скобках не пойму.

Спасибо.

Answer 1

В скобках используются битовые операции с маской - убирается всё, кроме младшего бита.

Т.е. если в двоичном виде неважно что было на месте "x" (0 или 1) после примерения маски 0000 0001 к числу xxxx xxxy через логическое "и" гарантированно останется только младший (крайний справа) бит в своём исходном виде, остальное обнулится. Останется только 0000 000y.

i = xxxx xxx1      xxxx xxx0
    &&&& &&&&      &&&& &&&&
1 = 0000 0001      0000 0001
    ---- ----      ---- ----
    0000 0001 = 1  0000 0000 = 0

Для сравнения: это как в десятичной системе взять число 321: маска подобрана так, что остаётся только цифра 1 в младшем разряде. И типа этот остаток проверяется на не/чётность.

Почитайте по теме:

  • Побитовые операции - о каких из них полезно знать программистам "более высоких" уровней?
  • Оператор | (ИЛИ) при передаче флагов в метод
READ ALSO
Telegram API CallBack + IIS

Telegram API CallBack + IIS

UPD2 Установив на сервер tshark, поймал ошибку такую

162
Проблема с определением <Сколько пикселей до левого края страницы или верха>

Проблема с определением <Сколько пикселей до левого края страницы или верха>

Знаю, есть getBoundingClientRectЭта штука даёт возможность определить расстояние до краёв на странице, относительно опорного тега

184
Как узнать кто вызвал функцию

Как узнать кто вызвал функцию

Хочу узнать из функции которую вызвали, кто именно её вызвал, и чтобы можно было обращаться к этой функции и к её prototype

160
Как берутся проекты для разработки

Как берутся проекты для разработки

К примеру клиент обратился ко мне и просит чтобы я добавил для его сайта некоей функциональности или что-то другое не важно, как именно происходит...

171