- от автора admin
Содержание
Назначение
В данной статье описывается принцип работы логических операторов ISBL: and, or, not, а также рассматривается возможность их использования не только в условиях.
Статья, в первую очередь, направлена на расширение кругозора и позволит лучше понять, как работает интерпретатор ISBL.
Также в статье есть пример нестандартного использования логических операторов — определение четности целого числа.
Принцип работы
Логические операторы and (и), or (или), not (не) в ISBL по сути являются побитовыми. Для наглядности можно провести аналогию с операторами из C-подобных языков:
ISBL | C# / C++ / Java / … | Описание |
and | & | Побитовое И |
or | | | Побитовое ИЛИ |
not | ~ | Побитовое отрицание |
Логические операторы в ISBL, в первую очередь, работают с логическими значениями TRUE и FALSE, которые являются системными константами, значения которых -1 и 0 соответственно. Т.к. мы знаем, что логические операторы производят побитовые вычисления, разложим эти значения на битовые представления:
Константа | Значение | Битовое представление |
TRUE | -1 | 1111…1111 |
FALSE | 0 | 0000…0000 |
Данные значения являются инверсиями относительно друг друга, поэтому они отлично работают в битовых операциях и используются в качестве логических значений.
При подстановке какого-либо выражения в условие (if, while, и т.д.) результат этого выражения сравнивается с нулем, если оно равно 0 – выражение ложно, иначе – истинно.
Примечание: из-за этого, если в условии забыть написать сравнение какого-то целого числа (например, if List.IndexOfName(‘name’)), то ошибки не будет, но условие будет отрабатывать неверно.
Применение
Понимание принципов работы этих операторов может расширить возможности математических вычислений (ниже – пример функции определения четности), а также повысить гибкость условий. К тому же, они работают быстро.
При их использовании стоит помнить о нескольких вещах:
- Использование логических операторов не по прямому назначению снижает понятность кода;
- Использовать в условиях not над математическими выражениями и числами надо осторожно, т.к. оба выражения «if 3» и «if not 3» дадут истину. Ложь можно получить только как «if not -1»;
- Целые числа в IS-Builder’е представляются 32 разрядами, и лучше воздержаться от логических операций с числами, не попадающими в диапазон 32х разрядных чисел.
Примеры
Проверка четности
Хорошим примером применимости логических операторов является определение четности целого числа. Предполагается, что это проверка будет оформлена в виде функции, которая возвращает логическое значение.
Выражение «and 1» даст нам последний бит числа, результатом будет являться 1 для нечетных и 0 для четных. Далее их нужно привести к стандартным значениям TRUE и FALSE, сделать это можно вычитанием единицы.
Код функции:
Assert(Round(Value; 0) = Value; «Переданное значение не является целым числом») Result = (Value and 1) — 1
Условие наличия элемента в списке
Простой пример, просто показывающий, что так можно, но такая реализация плохо читается, хотя и может пригодиться в сложных условиях.
Вот 3 идентичных варианта написания условия наличия элемента в списке для использования в if’e:
// Обычный if List.IndexOfName(ValueName) -1 // Какие-то вычисления endif // -1 инвертируется в 0, остальные значения в ненулевое целое число if not List.IndexOfName(ValueName) // Какие-то вычисления endif // Подобно примеру с четностью if List.IndexOfName(ValueName) + 1 // Какие-то вычисления endif
Проверка является ли число чётным одна из самых распространённых задач в программировании. Особенно, если учесть, что в C# отсутствует готовая функция для её решения.
К счастью, такую функцию можно легко написать самостоятельно. Существуют два основных способа решения этой задачи.
- Деление с остатком на 2;
- Использование побитового «И».
Рассмотрим их более подробно.
Деление с остатком на 2
Если число нечётное, то остаток от его деления на 2 будет больше нуля. Таким образом, для проверки числа на чётность необходимо проверить, равен ли нулю остаток отделения числа на 2.
C#
1 2 3 4 | private bool IsEven(int a) { return (a % 2) == 0; } |
Здесь всё предельно просто. Если число чётное, то логическое выражение в методе IsEven будет иметь значение «Истина» и сам метод вернёт значение «Истина».
Использование побитового «И»
Этот способ основан на том, что у нечётного числа младший бит, равен 1. Для проверки числа на чётность необходимо выполнить его побитовое умножение (побитовое «И») на 1. Если результат равен нулю, число чётное.
Проверка числа на четность и нечетность. Введение
В работе, я уже неоднократно сталкивался с необходимостью проверки числа на четность и нечетность, но почему-то не придавал этому особого значения, поэтому не затрагивал данную тему ранее. Но мне уже несколько раз присылали вопросы и просили помочь с задачами, в которых проверка четности числа может помочь в реализации. Поэтому я решил описать проблему и решение в статье.
Рассмотрим самую распространенную задачу, в которой проверка четности числа может все расставить на свои места. Допустим, у нас имеется массив данных, в котором хранится имена и фамилии людей. Необходимо вывести эти данные таким образом, чтобы каждое имя и фамилия начинались с новой строки и каждая вторая строка имела отступ 20 пикселей.
Решение задачи:
Необходимо при выводе каждого элемента массива считать номер элемента, если он четный, то есть 2, 4, 6 и тд, то будем делать отступы.
Проверка числа на четность и нечетность. Код
// массив данных $array_users = array( «Иван Иванов», «Иван Петров», «Петр Иванов», «Петр Петров», «Сидор Иванов», «Сидор Петров» ); // вывод данных $num = 1; foreach($array_users as $value){ // проверяем четность if(($num % 2) == 0){ // если четное, то делаем отступ echo «<span style=’padding-left: 20px;’>$value</span><br/>»; }else{ // если не четное, то просто выводим echo «<span>$value</span><br/>»; } $num ++; }
Задача решена.
Вся суть сводится к тому, что необходимо проверить остаток от деления числа на два. если остаток равен нулю, значит число четное.
$a = 5; if(($a % 2) == 0){ echo «Число четное»; }else{ echo «Число не четное»; }
С помощью такого же кода, можно добавлять стили для каждого третьего, каждого четвертого и тд элемента, только уже сравнивать остаток после деления на 2, 3, 4 и тд.
Чётность в теории чисел
— характеристика целого числа, определяющая его способность делиться нацело на два. Если целое число делится на два, оно называется чётным (примеры: 2, 28, —8, 40), если нет — нечётным (примеры: 1,3, 75, —19). Ноль считается чётным числом.
Чётное число — целое число, которое делится на 2 без остатка: …−4,−2,0,2,4,6,8,10…
Например, 4 ─ это чётное число, его можно разделить на 2. Это помогает в сложении.
Нечётное число — целое число, которое не делится на 2 без остатка: …−3,−1,1,3,5,7,9…
Иными словами чётное и нечётное — собственные названия классов вычетов и по модулю 2.
Признак чётности
Если в десятичной форме записи последняя цифра числа делится на два без остатка — число чётное. Если не делится — то нечётное.
Арифметика
Сложение и вычитание
- чётное ± чётное = чётное
- чётное ± нечётное = нечётное
- нечётное ± чётное=нечётное
- нечётное ± нечётное = чётное
Умножение:
- чётное × чётное = чётное
- чётное × нечётное = чётное
- нечётное × нечётное = нечётное
Деление:
- чётное / чётное — может быть любым
- чётное / нечётное = чётное, если целое
- нечётное / чётное — не может быть целым
- нечётное / нечётное = нечётное, если целое
История и культура
Понятие чётности чисел известно с глубокой древности, и ему часто придавалось мистическое значение. Так, в древнекитайской мифологии нечётные числа соответствовали Инь, а чётные — Ян.
В разных странах существуют связанные с количеством даримых цветов традиции, например в США, Европе и некоторых восточных странах считается, что чётное количество даримых цветов приносит счастье. В России чётное количество цветов принято приносить лишь на похороны умершим. В случаях, когда в букете много цветов, чётность или нечётность их количества уже не играет такой роли.
Примечания
- См., например, статью «Чётные числа» в большой советской энциклопедии.
ar:أعداد فردية و زوجية bg:Четни и нечетни числа ca:Nombre senar cs:Sudá a lichá čísla da:Lige og ulige tal
el:Άρτιοι και περιττοί αριθμοί
eu:Zenbaki bakoiti
he:מספר זוגי hu:Páros és páratlan számok io:Para e ne-para nombri is:Oddatala
Интересные материалы:
- Учебная практика по аудиту
Аудит собственного капитала предприятия "Все для бухгалтера", 2010, N 8 АУДИТ СОБСТВЕННОГО КАПИТАЛА ПРЕДПРИЯТИЯ Цель…
- Проверка противопожарных систем
ГОСТ Р 57974-2017 Производственные услуги. Организация проведения проверки работоспособности систем и установок противопожарной защиты зданий…
- Роспотребнадзор проверка
Как проходит проверка РоспотребнадзораЗачастую, руководителей компаний, задействованных в продаже товаров и оказанию услуг населению, пугает…
- 637 указ президента
Документ показан в сокращенном демонстрационном режиме! Получить полный доступ к документу Вход для пользователей Стань…
- Опубликовать новость в СМИ
Пресс-релиз — информационное сообщение, адресованное прессе, содержащее позицию компании по какому-либо вопросу, либо новость об…