Что означает запись $num & 1 или как быстро определить четное или нечетное число

Во многих языках программирования (js, php, c++) можно увидеть логическую операцию И с 1, зачем число сравнивают с единицей?
если вы увидели запись когда переменную сравнили с 1 :

if ($num & 1) {}

Это значит мы хотим узнать четное число или нет. Многие делают так:

if ($num % 2) {}

Но этот вариант занимает немного больше процессорного времени.

Рассмотрим глубже как выглядит для процессора операция & 1

Например число 7 & 1
7 в двоичной системе будет выглядеть как 111
запишем в столбик эту семерку и число 1
111
001
Теперь применим логическое И - получим результат:
001 - odd - нечетное, так как 1.
И в нашем коде это будет выглядеть так: if (1) {}
То есть 1 это true и значит можем вывести результат что число нечетное.
Почему так происходит? Потому что в двоичном коде, если первый разряд СПРАВА 1 - то любое десятичное число всегда нечетное, если первый разряд 0 - то число четное. И при логическом сравнении с 1 мы можем быстро это определить.



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы