что такое булевая переменная
Что такое булевая переменная
Булевыми величинами (или булевыми константами) называются два заранее выбранных разных символа.
Булевыми переменными называются переменные, которые могут принимать булевы значения.
Эти 5 правил определяют ситуации, в которых алгебра логики может быть применена. Рассмотрим пример. Пусть речь идет о цехе автомобильного завода, где сушатся только что покрашенные автомобили и мы хотим применить алгебру логики, рассуждая об автомобилях в этом цеху.
Мы можем применить алгебру логики к цвету автомобилей, если все они либо «зеленые», либо «красные».
По правилу 1, если в цехе есть помимо красных и зеленых еще и желтые автомобили, то мы не можем применить алгебру логики, деля их на «красные» и «зеленые». Потому, что кроме двух значений «красный» и «зеленый» появляется третье: «желтый». Можно выйти из затруднения, рассмотрев автомобили «зеленые» и «незеленые» (то есть всех остальных цветов).
По правилу 2, если в цехе есть красные автомобили в зеленую полоску или зеленые в красный горошек, то мы не можем применить алгебру логики, деля их на «красные» и «зеленые». Потому, что о некоторых автомобилях можно будет сказать, что он и «красный», и «зеленый» одновременно. Можно выйти из затруднения, если договориться считать «красными» автомобили, которые сначала покрывают красной краской.
По правилу 3, если в цехе есть помимо красных или зеленых вовсе некрашеные автомобили, то мы не можем применить алгебру логики деля их на «красные» и «зеленые». Потому, что о некрашеных автомобилях еще нельзя сказать, что они красные или зеленые. Можно выйти из этого затруднения, если считать красными те автомобили, которые запланировано покрасить в красный цвет, а зелеными те, которые запланировано покрасить в зеленый.
По правилу 4, если в цехе не все автомобили одновременно зеленые или красные, это не помешает применению алгебры логики к цвету автомобилей. С другой стороны, если в цехе всегда только красные автомобили или только зеленые, то нет смысла заводить столько переменных, сколько автомобилей. Достаточно одной переменной для всех автомобилей сразу.
Правила 1, 2, 3 и 5 должны обязательно выполняться все. Если не выполняется хотя бы одно из них, алгебра логики не применима. Правило 4 поясняет одну ситуацию, когда могут возникнуть сомнения насчет применения алгебры логики.
Булевы переменные и операции.
Базовые элементы ЭВМ.
Немного о логике.
Он считал, что человеческий разум может постигнуть истину, если будет следовать следующим правилам:
· исходить из достоверных положений;
· сводить сложные идеи к простым;
· переходить от известного и доказанного к неизвестному, избегая каких-либо пропусков в логических звеньях исследований.
Продолжение развития логики начинается с появления математической, или символической, логики. Основоположником математической логики считают великого немецкого математика и философа Готфрида Вильгельма Лейбница (1646-1716). Он попытался построить первые логические исчисления: арифметические и буквенно-алгебраические, что можно заменить простые рассуждения действиями со знаками, и привел соответствующие правила.
Но Лейбниц высказал только идею, а развил ее окончательно англичанин Джордж Буль (1815-1864). Буль считается основоположником математической логики как самостоятельной дисциплины. Он вывел для логических построений особую алгебру (алгебру логики). В отличии от обычной логики, в ней символами обозначаются не числа, а высказывания.
Булева алгебра, которая состоит из алгебры множеств и алгебры высказываний. Из этих разделов берет начало алгебра релейных схем.
В 1938 году выдающийся американский математик и инженер Клод Шеннон обнаружил, что алгебру логики можно применить к любым переменным, которые могут принимать только два значения, что и нужно для логических элементов ЭВМ.
Булевы переменные и операции.
Булева переменная – это переменная, которая может принимать только два значения: 0 и 1.
0 иногда называют «Ложь» или «False».
1 иногда называют «Истина» или «True».
Для булевых переменных определены следующие операции:
Логическое НЕ: обозначают или или
Логическое ИЛИ: обозначают или | или V;
Логическое И: обозначают или &| или Λ;
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ: обозначают или » или Å.
Каждая операция определяется следующим образом:
ИЛИ: a V b = 1, если a и b одновременно не равны 0;
a V b = 0, если a = b = 0;
И: a Λ b = 0, если a и b одновременно не равны 1;
a Λ b = 1, если a = b = 1;
ИСКЛЮЧАЮЩЕЕ ИЛИ: a Åb = 1, если a ≠ b;
a Å b = 0, если a = b.
В алгебре логики логические операции часто описываются при помощи так называемых таблиц истинности.
Таблица истинности представляет собой таблицу, устанавливающую соответствие между возможными значениями набора переменных и значениями функции.
Таблицы истинности логических функций позволяют определить значения, которые принимают эти функции при различных значениях переменных, сравнивать функции между собой, определять, удовлетворяют ли функции заданным свойствам.
В табл.2.2 показана таблица истинности для логических операций над переменными a и b.
Таблица 2.2. Таблица истинности для переменных a и b.
Переменные | Полученное значение после операций | ||||
a | b | НЕ | ИЛИ (a | b) | И (a & b) | ИСКЛЮЧАЮЩЕЕ ИЛИ (a Å b) |
(a) | (b) |
Нужно отметить, что только операция НЕ применяется к одной переменной.
Логические элементы.
Опираясь на логические операции, построены следующие логические элементы:
· Схема И (Рис. 2.4.) (реализует конъюнкцию (логическое умножение) двух или более логических значений).
Единица на выходе схемы И будет тогда и только тогда, когда на всех входах будут единицы. Когда хотя бы на одном входе будет ноль, на выходе также будет ноль.
В табл.2.3 показана таблица истинности для логической функции «И».
Таблица 2.3. Таблица истинности для логической функции «И».
· Схема ИЛИ(Рис. 2.5.) (реализует дизъюнкцию (логическое сложение) двух или более логических значений)
Когда хотя бы на одном входе схемы ИЛИ будет единица, на её выходе также будет единица.
В табл.2.4 показана таблица истинности для логической функции «ИЛИ».
Таблица 2.4. Таблица истинности для логической функции «ИЛИ».
· Схема НЕ(Рис. 2.6.) ((инвертор) реализует операцию отрицание двух или более логических значений.)
В табл.2.5 показана таблица истинности для логической функции «НЕ».
Таблица 2.5. Таблица истинности для логической функции «НЕ».
Очень часто вместо Y = X пишут Y = X.
В чистом виде логические элементы «И», «ИЛИ», «НЕ» используются очень редко. А наиболее часто в реализации логических элементов используются комбинированные логические элементы, выполняющие две функции.
Для реализации сколь угодно сложных функций удобно использовать элементы, обладающие логической полнотой (способность функции выражать все логические функции). Это функции «И-НЕ» и «ИЛИ-НЕ».
· Схема И-НЕ(Рис. 2.7.) (операция Шеффера).
Схема И-НЕсостоит из элементовИ и НЕ. Она осуществляет отрицание результата схемы И. Связь между выходом Y и входами X1 и X2 схемы записывают следующим образом: Y =( X1 & X2) или Y = ( X1 & X2).
В табл.2.6 показана таблица истинности для логической функции «И-НЕ».
Таблица 2.6. Таблица истинности для логической функции «И-НЕ».
X1 | X2 | Y = X1 & X2 | Y =( X1 & X2) |
· Схема ИЛИ-НЕ(Рис. 2.8.) (Стрелка Пирса).
Схема ИЛИ-НЕсостоит из элементовИЛИ и НЕ. Она осуществляет отрицание результата схемы ИЛИ. Связь между выходом Y и входами X1 и X2 схемы записывают следующим образом: Y =( X1|X2) или Y = ( X1|X2).
В табл.2.7 показана таблица истинности для логической функции «ИЛИ-НЕ».
Таблица 2.7. Таблица истинности для логической функции «ИЛИ-НЕ».
X1 | X2 | Y = X1 | X2 | Y =( X1|X2) |
Из логических элементов путем их комбинации стоятся основные схемы компьютера:
Регистр— совокупность триггеров, предназначенных для хранения числа в двоичном коде.
Эти схемы входят в состав разнообразных цифровых устройств.
Что такое булевая переменная
Рассмотрим, например выключатель, которым мы включаем нашу обычную осветительную лампу. Выключатель также имеет два состояния: включен и выключен.
Переменные, которые имеют два состояния, называются логическими переменными или переменными булевского типа.
Для них в языке Паскаль существует специальный тип bolean. Соответственно такие переменные описываются в секции описаний:
Здесь описаны две логические переменные b1 и b2.
Операции обычной арифметики к таким переменным неприменимы. Некоторые из них мы разберем на примерах.
Рассмотрим такую схему, состоящую из двух выключателей X1 и X2 включенных последовательно и лампочки. Каждый выключатель может быть включен или выключен, так что всего мы будем иметь четыре комбинации. Распишем эти комбинации в таблицу.
В языке Паскаль эта операция обозначается как “ AND ” и записывается так.
Var X1,X2,Result:Boolean;
…
Result := X1 AND X2;
…
Рассмотрим теперь другую схему, также с двумя выключателями, но соединенными по другому.
Понятно, что теперь лампочка будет гореть, если хотя бы один выключатель включен. Опять составим таблицу возможных вариантов.
В языке Паскаль эта операция обозначается как “ OR ” и записывается так.
Var X1,X2,Result:Boolean;
…
Result := X1 OR X2;
…
Схемы с лампочками и выключателями приведены только для того, чтобы облегчить понимание того, что такое логические функции. Главное, это таблица истинности. Любая логическая функция задается с помощью таблицы истинности.
Есть еще две важные операции. Отрицание и “исключающее или”.
Смысл операции отрицания понятен из названия. В Паскале она записывается как “ NOT ”. Могут использоваться также другие обозначения:
¬, черта над символом “¯” и другие.
Эта функция одноместная, то есть имеет один аргумент.
Исключающее или в Паскале записывается как “XOR”. Ее смысл таков функция имеет значение истина, когда операнды не равны друг другу.
Тип Boolean и операторы сравнения в Java
Узнаём про булев тип, операции сравнения, условные конструкции if-else, switch и тернарный оператор. Осмысляем instanceof. Всё подробно и с примерами.
Boolean — это тип данных, переменные которого принимают одно из значений:
Булевы переменные в Java создают так:
Значение типа boolean возвращают операции сравнения, логические операции и их сочетания. Выражения с ними — это по сути условные высказывания, которые могут быть правдивы или нет.
Java-разработчик, преподаёт в Skillbox, осваивает машинное обучение.
Операция сравнения
Операция сравнения возвращает:
Например, мы хотим сравнить в Java значения переменных a и b. Для этого используем оператор >, который возвращает булево значение (true или false).
a > b равно true, когда значение переменной a больше значения переменной b (операнд слева от > больше правого), а иначе — false.
Оператор > сравнил операнд слева с операндом справа. Результат сравнения мы присвоили булевой переменной c.
Так как 4 > 3 (высказывание правдиво), значение переменной c после выполнения кода станет равным true.
Операторы сравнения в Java
Один оператор сравнения мы рассмотрели выше, а всего в Java их шесть:
Где нужны значения типа Boolean
Булевы значения и условные выражения часто используются в условиях операторов ветвления, тернарного оператора и циклов.
Операторы ветвления
Оператор ветвления позволяет выбрать и исполнить определённый блок кода в зависимости от срабатывания некоторого условия.
Есть два оператора ветвления (условные конструкции): if-else и switch.
Его синтаксис выглядит так:
В круглых скобках после if указывают условное выражение (высказывание). Если оно истинно (то есть результат его вычисления равен true), то выполняется код в фигурных скобках после условия, иначе выполняется код по ветке else (если она есть).
Проверяем условие в круглых скобках:
Если да, то в консоль выводим: « Высказывание в скобках правдивое», иначе ничего не выводим.
Так как 3 и правда больше 2, то в консоли появилось наше сообщение.
Печатаем « Высказывание в скобках правдивое», если результат вычислений в круглых скобках = true. В ином случае выводим: « Высказывание в скобках ложное».
Так как выражение (3 Высказывание в скобках ложное».
Вложенные конструкции
Допустим, мы хотим проверить некое условие, и если оно не выполнилось — проверить другое условие и так далее. Сделать это можно двумя способами.
Синтаксис тут такой:
//действия, если условие1 выполнено;
//действия, если условие2 выполнено;
//действия, если все предыдущие условия не выполнились;
Каждое логическое условие записывают через комбинацию else if, после которых в круглых скобках идёт альтернативное условие. Последний вариант (если ни одно из условий не сработало) записывается через else без условия.
Синтаксически это выглядит так:
//действия, если условие1 выполнено;
//действия, если условие2 выполнено;
//действия, если условие3 выполнено;
//действия, если условие последнего if тоже не выполнилось;
Каждое следующее условие проверяется только в том случае, если предыдущее не выполнилось. Как только найдётся одно правдивое условие (или мы достигнем последнего else), выполнится код в фигурных скобках после этого условия, а оставшаяся цепочка условий будет пропущена.
Иногда условий else if нужно довольно много:
Оператор множественного выбора (switch)
Он применяется, когда нужно выполнить один из нескольких блоков кода в зависимости от значения аргумента.
Выгода от switch тем очевиднее, чем больше проверок и вариантов действий нам нужно.
В круглых скобках указывается аргумент для switch, а в каждом блоке case — чему этот аргумент должен равняться, чтобы выполнился код после двоеточия.
В нашем случае выполнится case 5, так как переменная dayOfWeekNum (порядок дня в неделе) равна 5.
В конце каждого блока case мы ставим break. Если этого не сделать, то выполнится также код из следующего блока case и так далее.
Если для нескольких значений аргумента нужно выполнять один и тот же код, то блоки case можно объединить.
Например, для будних дней ( dayOfWeekNum от 1 до 5) будем выводить, какой это по счёту рабочий день, а для уикенда — первый или второй это выходной:
Теперь при значении переменной dayOfWeekNum от 1 до 5 выполнится один и тот же код, и для значений 6 и 7 — тоже одинаковый.
Также можно задать действие, если ни одно из условий не сработало. Делается это с помощью ключевого слова default:
Примечание. Слово break означает выход из switch…case. Поэтому если ваш блок default стоит не последним, то тоже завершайте его словом break, иначе выполнится код из следующего case.
Ограничения для оператора switch
Есть ряд условий, которые следует выполнять:
Обновлённый оператор switch в Java 14
С версии 14 Java поддерживает новый синтаксис switch:
Теперь нам не нужно писать break, а двоеточие заменено на стрелочку и фигурные скобки. Блок default по-прежнему не обязателен.
Если код блока case состоит всего из одной строки, то фигурные скобки можно не использовать:
В операторе switch прошлой версии мы задавали одно действие для нескольких значений case, располагая пустые case над case c кодом:
В новой версии для этого хватает одного case, а связанные с ним значения разделяются запятой. Например:
Теперь switch — уже не просто оператор ветвления, он может вернуть значение. Это делается с помощью вспомогательного оператора yield.
В новой версии switch, когда нам нужно лишь вернуть значение из соответствующего case (он должен быть без кода), — можно обойтись и без слова yield:
Советы и упрощения
1. Фигурные скобки после if или else разрешено не ставить, если тело блока состоит всего из одной строки.
2. Вот так писать не следует (внимание на условие в if):
Код будет работать, но сравнение boolean с boolean в условии — это лишняя операция.
Поскольку метод isMoreFive сам возвращает булево значение — напишите вот так:
Булевский тип
Содержание
Реализация
Булевый тип данных может быть реализован с использованием только одного бита, но обычно используется минимальная адресуемая ячейка памяти (байт) или машинное слово, как эффективная единица работы с регистрами и оперативной памятью.
Доступные операции
К этому типу данных применимы следующие операции:
Так же могут использоваться и другие операции булевой алгебры. Большинство языков программирования позволяют использовать булевый тип и в арифметических операциях, приводя его к численному типу согласно принятым в языке правилам приведения типов.
Применение
Традиционным применением булевого типа данных являются значения «да»/«нет» в отношении результата более сложных операций.
Все операции сравнения двух величин (равно, больше, меньше), операции вхождения элемента в множество и проверка на пересечение множеств возвращают в качестве результата булевый тип.
Реализация в различных языках программирования
Algol
Algol 60 имеет тип данных boolean и соответствующие операторы, установленные в спецификации Algol 60. Тип данных был сокращён до bool в ALGOL 68.
В языке программирования C, который не предоставлял булевых значений в C89 (но вводит в C99) вместо значений true/false было установлено сравнение значения с нулём. Для примера, код на C
Это было честно для типа данных целочисленное (integer); тем не менее бинарные значения чисел с плавающей запятой (floating-point) были приближёнными к выводимым на экран десятичным значениям и это давало ошибки при сравнении. Традиционно, целое содержало одну (или более) булевую переменную (одну на каждый разряд целого).
Python
Для других объектов результат рассчитывается через метод __nonzero__, который в идеале должен возвращать значения True/False.
Булевый тип приводится к следующим типам данных:
К другим типам данных булевый тип не приводится.
Pascal
Описание переменных
Операции
Арифметических нет. Операций отношений нет. Допустимы следующие логические операции: Not, And, Or, Xor Допустимые функции: Ord,Pred,Succ
Полезное
Смотреть что такое «Булевский тип» в других словарях:
булевский тип — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN boolean type … Справочник технического переводчика
Перечисляемый тип — (сокращённо перечисление, англ. enumeration, enumerated type) в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов. Содержание 1 Описание и использование 2 … Википедия
Примитивный тип — Примитивный (встроенный, базовый) тип тип данных, предоставляемый языком программирования как базовая встроенная единица языка. В зависимости от языка и его реализации, набор таких типов может сильно различаться. Он определяется… … Википедия
C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в … Википедия
С++ — См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в: 1985 г. Автор(ы): Бьёрн Страуструп … Википедия
C— — (читается как Cи минус минус), название для нескольких независимо развитых языков программирования. Цель этих языков состоит в том, чтобы заменить язык программирования C другим портируемым языком, который ближе привязан к компьютерным апп … Википедия
Объектный Си — Objective C Класс языка: объектно ориентированный, мультипарадигмальный: рефлексивно ориентированный Появился в: 1986 г. Автор(ы): Типизация данных: строгая полиморфная, статическая Основные реализации: Apple gcc Испытал … Википедия
Список дворянских родов Минской губернии — Титульная страница Алфавитного списка дворянских родов Минской губернии за 1903 г. Список дворянски … Википедия