Что означает запись $num & 1 или как быстро определить четное или нечетное число
Компьютеры / Программирование
Тэги: двоичный код двоичные числа логические операторы четные числа числа
Тэги: двоичный код двоичные числа логические операторы четные числа числа
📅30-04-2020 👁177
Во многих языках программирования (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 мы можем быстро это определить.
if ($num & 1) {}
Это значит мы хотим узнать четное число или нет. Многие делают так:
if ($num % 2) {}
Но этот вариант занимает немного больше процессорного времени.
Рассмотрим глубже как выглядит для процессора операция & 1
Например число 7 & 1
7 в двоичной системе будет выглядеть как 111
запишем в столбик эту семерку и число 1
111
001
Теперь применим логическое И - получим результат:
001 - odd - нечетное, так как 1.
И в нашем коде это будет выглядеть так: if (1) {}
То есть 1 это true и значит можем вывести результат что число нечетное.
Почему так происходит? Потому что в двоичном коде, если первый разряд СПРАВА 1 - то любое десятичное число всегда нечетное, если первый разряд 0 - то число четное. И при логическом сравнении с 1 мы можем быстро это определить.
Оставить свой ответ: