Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Логические операции (and, or, xor, not): таблицы истинности

Бит — это минимальная единица измерения объёма информации, так как она хранит одно из двух значений — 0 (False) или 1 (True). False и True в переводе на русский ложь и истина соответственно. То есть одна битовая ячейка может находиться одновременно лишь в одном состоянии из возможных двух. Напомню, два возможных состояния битовой ячейки равны — 1 и 0.
Есть определённые операции, для манипуляций с битами. Эти операции называются логическими или булевыми операциями, названные в честь одного из математиков — Джорджа Буля (1815-1864), который способствовал развитию этой области науки.
Все эти операции могут быть применены к любому биту, независимо от того, какое он имеет значение — 0(нуль) или 1(единицу). Ниже приведены основные логические операции и примеры их использования.

Логическая операция И (AND)

Обозначение AND: &

Логическая операция И выполняется с двумя битами, назовем их a и b. Результат выполнения логической операции И будет равен 1, если a и b равны 1, а во всех остальных (других) случаях, результат будет равен 0. Смотрим таблицу истинности логической операции and.

a(бит 1)b(бит 2)a(бит 1) & b(бит 2)
 0 0 0
 0 1 0
1 0 0
11 1

Логическая операция ИЛИ (OR)

Обозначение OR: |

Логическая операция ИЛИ выполняется с двумя битами (a и b). Результат выполнения логической операции ИЛИ будет равен 0, если a и b равны 0 (нулю), а во всех остальных (других) случаях, результат равен 1 (единице). Смотрим таблицу истинности логической операции OR.

a(бит 1)b(бит 2)a(бит 1) | b(бит 2)
000
011
101
111

Логическая операция исключающее ИЛИ (XOR).

b(бит 2)000011101110

Логическая операция НЕ (not)

Обозначение NOT: ~
Логическая операция НЕ выполняется с одним битом. Результат выполнения этой логической операции напрямую зависит от состояния бита. Если бит находился в нулевом состоянии, то результат выполнения NOT будет равен единице и наоборот. Смотрим таблицу истинности логической операции НЕ.

a(бит 1)~a(отрицание бита)
01
10

Запомните эти 4 логические операции. Используя эти логические операции, мы можем получить любой возможный результат. Подробно об использовании логических операций в С++ читаем тут.

Page not found – Сайт skobelevserg!

  • Главная
  • Информатика
  • Практикумы
  • Подготовка к ОГЭ
  • Рабочие программы
  • Используемая литература
  • Об авторах

Unfortunately the page you’re looking doesn’t exist (anymore) or there was an error in the link you followed or typed. This way to the home page.

  • Главная
  • Информатика
    • 5 класс (ФГОС)
      • Информация вокруг нас
      • Компьютер – универсальная машина для работы с информацией
      • Ввод информации в память компьютера
      • Управление компьютером
      • Хранение информации
      • Передача информации
      • Кодирование информации
      • Текстовая информация
      • Представление информации в виде таблиц
      • Наглядные формы представления информации
      • Компьютерная графика
      • Обработка информации
    • 6 класс (ФГОС)
      • Объекты окружающего мира
      • Компьютерные объекты
      • Отношения объектов и их множеств
      • Разновидности объектов и их классификация
      • Системы объектов
      • Персональный компьютер как система
      • Как мы познаем окружающий мир
      • Понятие как форма мышления
      • Информационное моделирование
      • Знаковые информационные модели
      • Табличные информационные объекты
      • Графики и диаграммы
      • Схемы
      • Что такое алгоритм
      • Исполнители вокруг нас
      • Формы записи алгоритмов
      • Типы алгоритмов
      • Управление исполнителем Чертежник
      • Компьютерный практикум
    • 7 класс (ФГОС)
      • Информация и информационные процессы
      • Компьютер универсальное устройство для работы с информацией
      • Обработка графической информации
      • Обработка текстовой информации
      • Технология мультимедиа
    • 8 класс (ФГОС)
      • Математические основы информатики
      • Основы алгоритмизации
      • Начала программирования
    • 9 класс (ФГОС)
      • Моделирование и формализация
      • Алгоритмизация и программирование
      • Обработка числовой информации в электронных таблицах
      • Коммуникационные технологии
    • 10 класс (ФГОС)
      • Информация и информационные процессы
      • Компьютер и его программное обеспечение
      • Представление информации в компьютере
      • Элементы теории множеств и алгебры логики
      • Современные технологии создания и обработки информационных объектов
    • 11 класс (ФГОС)
      • Обработка информации в электронных таблицах
      • Алгоритмы и элементы программирования
      • Информационное моделирование
      • Сетевые информационные технологии
      • Основы социальной информатики
    • Безопасность в сети Интернет
  • Практикумы
    • Google формы
    • Основы работы в Microsoft PowerPoint
    • Создание анимации в презентациях
    • Основы работы в Microsoft Word
    • Основы работы в Microsoft Excel
    • Создание простейшей базы данных
    • Практикум по MS Excel
  • Подготовка к ОГЭ
  • Рабочие программы
  • Используемая литература
  • Об авторах
    • Блоги
    • Сайты
Логический оператор

(справочник Simulink) Логический оператор

(справочник Simulink)
Ссылка Simulink    
Логический оператор

Выполнить заданную логическую операцию над входом

Библиотека

Математические операции Simulink и логика и сравнение блоков с фиксированной точкой

Описание

Блок логического оператора выполняет указанную логическую операцию на своих входах. Входное значение ИСТИНА (1), если оно не равно нулю, и ЛОЖЬ (0), если оно равно нулю.

Вы выбираете булеву операцию, соединяющую входы со списком параметров Оператор . Значок блока обновляется, отображая выбранного оператора. Поддерживаемые операции приведены ниже.

Эксплуатация
Описание
И
ИСТИНА, если все входы ИСТИНА
ИЛИ
ИСТИНА, если хотя бы один вход ИСТИНА
И-НЕ
ИСТИНА, если хотя бы один вход имеет значение ЛОЖЬ
НО
ИСТИНА, если нет входных данных ИСТИНА
Исключающее ИЛИ
ИСТИНА, если нечетное количество входов ИСТИНА
НЕ
ИСТИНА, если ввод ЛОЖЬ

Количество входных портов задается параметром Количество входных портов . Тип вывода указывается с помощью Режим выходных данных и/или параметры Тип выходных данных . Выходное значение равно 1, если TRUE, и 0, если FALSE.

Размер вывода зависит от размера входного вектора и выбранного оператора:

  • Если блок имеет более одного входа, все нескалярные входы должны иметь одинаковые размерности. Например, если какой-либо вход представляет собой массив 2 на 2, все остальные нескалярные входы также должны быть массивами 2 на 2.
  • Скалярные входы расширяются, чтобы иметь те же размеры, что и нескалярные входы.

    Если блок имеет более одного входа, выход имеет те же размерности, что и входы (после скалярного расширения), и каждый выходной элемент является результатом применения указанной логической операции к соответствующим входным элементам. Например, если задана операция И, а входные данные представляют собой массивы 2 на 2, на выходе будет массив 2 на 2, верхний левый элемент которого является результатом применения И к верхним левым элементам входных данных и т.  д.

  • Для одного входного вектора блок применяет операцию (кроме оператора НЕ) ко всем элементам вектора. Выход всегда является скаляром.
  • Оператор НЕ принимает только один вход, который может быть скаляром или вектором. Если вход представляет собой вектор, выход представляет собой вектор того же размера, содержащий логические дополнения элементов входного вектора.

При настройке в качестве вентиля XOR с несколькими входами этот блок выполняет операцию сложения по модулю два в соответствии со стандартом IEEE для логических элементов.

Когда установлен флажок Показать дополнительные параметры , некоторые параметры, которые становятся видимыми, являются общими для многих блоков. Для подробного описания этих параметров обратитесь к Block Parameters в документации Fixed-Point Blockset.

Поддержка типов данных

Блок логического оператора принимает действительные или комплексные сигналы любого типа данных, кроме int64 и uint64 .

Однако, если для параметра Режим типа выходных данных установлено значение Логический , ввод может быть только логическим или двойным .

Параметры и диалоговое окно

Оператор
Логический оператор, применяемый к входам блока. Допустимыми вариантами являются операторы, перечисленные ранее.
Количество входных портов
Количество входов блока. Значение должно соответствовать выбранному оператору.
Показать дополнительные параметры
Если выбрано, дополнительные параметры, характерные для реализации блока, становятся видимыми, как показано.

Требовать, чтобы все входы и выходы имели одинаковый тип данных
Выберите, чтобы все входные и выходные данные имели один и тот же тип данных.
Режим типа выходных данных
Задайте для типа выходных данных значение Boolean или укажите тип данных с помощью параметра Тип выходных данных .
В качестве альтернативы можно выбрать Logical , чтобы тип выходных данных определялся параметром Boolean Logic Signals на вкладке Advanced интерфейса параметров моделирования. Если вы выберете Logical и Boolean Logic Signals равно на , тогда тип выходных данных всегда будет Boolean . Если вы выберете Logical и Boolean Logic Signals off , то тип выходных данных будет соответствовать типу входных данных, который может быть Boolean или double .
Тип выходных данных
Тип выходных данных. Вы должны использовать только те типы данных, которые точно представляют ноль. Типы данных, удовлетворяющие этому условию, включают целые числа со знаком и без знака, а также любой тип данных с плавающей запятой. Этот параметр виден, только если Указать в диалоговом окне выбрано для параметра Режим типа выходных данных .

Характеристики

Размеры
Да
Прямой ввод
Да
Время выборки
Унаследовано от приводного блока
Скалярное расширение
Входов
Пересечение нуля

  Интерполяционная таблица Программирование на языке R: от Zero до Pro

В последнем разделе вы узнали, как выполнить подмножество вектора, которое дает подвектор исходного вектора. Возьмем, к примеру, числовой вектор x <- 1:5 . Чтобы получить подвектор x со значениями больше 3, вы можете сначала создать логический вектор xb3 <- x > 3 , а затем использовать xb3 в качестве индекса для подмножества вектора.

 х <- 1:5
хb3 <- х > 3
набор1 <- х[xb3]
набор1
#> [1] 4 5 

Здесь числовой вектор set1 имеет значения 4 5 . Вы можете получить еще один подвектор x , запустив следующие коды.

 xs4 <- x <= 4
набор2 <- х[xs4] 

Иногда вам может понадобиться получить подвектор с более чем одним условием. Например, как мы можем найти подвектор x со значениями больше 3 и меньше или равными 4? В этом разделе мы представим несколько логических операторов и будем использовать их для получения подвекторов. Здесь мы только представляем, как применять эти операторы к логическим векторам.

Прежде чем мы начнем, давайте создадим еще один числовой вектор y и сравним его с 8 и 9 отдельно, то вы получите два логических вектора с такими же значениями как xb3 и xs4 .

 г <- 6:10
yb8 <- y > 8 #xb3 совпадает с yb8
ys9 <- y <= 9 #xs4 то же, что и ys9 

2.

7.1 Оператор НЕ по !

Первый оператор, который мы хотим ввести, это ! , часто называемый оператором НЕ . Оператор НЕ возвращает логическое значение, противоположное входным логическим значениям. Это интуитивно понятно, поскольку если что-то НЕ ЛОЖНО, то это ИСТИННО; а если это НЕ ИСТИНА, то это должно быть ЛОЖЬ. Он сведен в следующую таблицу.

!ИСТИНА ЛОЖЬ
!ЛОЖЬ ИСТИНА

Давайте посмотрим, что произойдет, если вы примените оператор НЕ к логическому вектору.

 !c(ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ИСТИНА, ИСТИНА) # противоположность логического вектора
#> [1] TRUE TRUE TRUE FALSE FALSE 

В результате вы получите еще один логический вектор той же длины, что и исходный. Значение каждого элемента в новом векторе равно напротив соответствующего значения в исходном векторе.

Поскольку xb3 тоже логический вектор, можно попробовать применить ! на xb3 и используйте !xb3 (который также является логическим вектором) для подмножества векторов. Угадайте, что вы получите?

 !xb3
#> [1] ИСТИНА ИСТИНА ИСТИНА ИСТИНА ЛОЖЬ ЛОЖЬ
set3 <- х[!xb3]
набор3
#> [1] 1 2 3 

Конечно, результирующий числовой вектор set3 будет иметь значения 1 2 3 ! В результате set1 и set3 дополняют друг друга из всего вектора x .

Из раздела 2.6 вы узнали, что если используемые вами логические векторы идентичны, вы получите тот же результат после выполнения поднабора векторов. Таким образом, если вы используете !yb8 для подмножества вектора, вы получите вектор с тем же результатом, что и при использовании set3 .

 х[!yb8]
#> [1] 1 2 3 

2.7.2 Оператор И для

и

Во-вторых, мы введем оператор И и . Подобно сравнению между двумя логическими векторами, и выполняют сравнения поэлементно, что создает вектор с той же длиной, если входные логические векторы имеют ту же длину или ту же длину, что и у более длинного вектора. Для каждого местоположения результирующего вектора значение будет ИСТИНА , если оба значения в одном и том же месте входных двух векторов равны оба TRUE , иначе будет FALSE . В частности, для каждого элемента у нас есть следующая сводка.

ИСТИНА И ИСТИНА ИСТИНА
ПРАВДА И ЛОЖЬ ЛОЖЬ
ЛОЖЬ И ПРАВДА ЛОЖЬ
ЛОЖЬ И ЛОЖЬ ЛОЖЬ

Давайте рассмотрим пример операции И между двумя логическими векторами одинаковой длины.

 c(ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ИСТИНА, ИСТИНА) & c(ИСТИНА, ИСТИНА, ЛОЖЬ, ИСТИНА, ЛОЖЬ)
#> [1] FALSE FALSE FALSE TRUE FALSE 

Как объяснялось ранее, оператор AND работает поэлементно, а промежуточный шаг описан ниже.

 c(ЛОЖЬ И ИСТИНА, ЛОЖЬ и ИСТИНА, ЛОЖЬ и ЛОЖЬ, ИСТИНА и ИСТИНА, ИСТИНА и ЛОЖЬ)
#> [1] FALSE FALSE FALSE TRUE FALSE 

Как видно из результата, только четвертый элемент равен TRUE , так как четвертый элемент обоих входных логических векторов равен ИСТИНА .

Так как оператор И выполняет сравнения поэлементно, здесь также работает правило повторного использования . Но обычно нам нужен один вектор с длиной > 1 и другой с длиной 1.

 c(FALSE, FALSE, FALSE, TRUE, TRUE) & FALSE
#> [1] FALSE FALSE FALSE FALSE FALSE FALSE 

Изучив оператор AND, вы теперь можете легко получить подвектор x со значениями > 3 и <= 4. В начале этого раздела вы создали два логических вектора xb3 и xs4 путем сравнения, затем применим и к этим векторам,

 xb3 и xs4
#> [1] FALSE FALSE FALSE TRUE FALSE 

Из результата вы знаете, что и xb3 , и xs4 имеют значение TRUE для четвертого элемента, что означает утверждение, что значение равно > 3 и < = 4 ИСТИНА для четвертого элемента в x . Затем вы можете использовать xb3 и xs4 (логический вектор) для подмножества векторов.

 х[хb3 и хs4]
#> [1] 4 

Здесь вы получаете подвектор x со значением 4 .

Поскольку xs4 и ys9 имеют одинаковые значения, вы получите тот же результат, если вы включите ys9 для получения подвектора. Вы можете попробовать следующие коды самостоятельно.

 х[xb3 и ys9]
x[yb8 & ys9] 

Обратите внимание, что логический вектор, используемый для подмножества векторов, должен иметь размер той же длины , что и исходный вектор. Поскольку x и y имеют одинаковую длину, логические векторы, приведенные выше, также можно использовать для получения подвекторов y . Вы получите тот же результат от следующих четырех кодов.

 у [xb3 и xs4]
у[yb8 и ys9]
у[xb3 и ys9]
y[yb8 & xs4] 

2.7.3 Оператор ИЛИ by

|

Оператор ИЛИ | работает аналогично оператору И и , но разница в том, что | возвращает ИСТИНА , если хотя бы один ИСТИНА находится среди двух элементов в одном и том же месте в двух векторах. Давайте вместе рассмотрим несколько примеров.

ИСТИНА | ИСТИНА ИСТИНА
ИСТИНА | ЛОЖЬ ИСТИНА
ЛОЖЬ | ИСТИНА ИСТИНА
ЛОЖЬ | ЛОЖЬ ЛОЖЬ

Давайте попробуем еще один пример с векторами длины > 1 и сравним результат с тем, когда мы используем оператор И и .

 c(ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ИСТИНА, ИСТИНА) | в(ИСТИНА, ИСТИНА, ЛОЖЬ, ИСТИНА, ЛОЖЬ)
#> [1] ИСТИНА ИСТИНА ЛОЖЬ ИСТИНА ИСТИНА
c(ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ИСТИНА, ИСТИНА) & c(ИСТИНА, ИСТИНА, ЛОЖЬ, ИСТИНА, ЛОЖЬ)
#> [1] FALSE FALSE FALSE TRUE FALSE 

Вы также получаете логический вектор длины 5 с помощью поэлементной операции ИЛИ | , что сильно отличается от результата с операцией И и .

Конечно, вы также можете использовать xb3 | xs4 для подмножества вектора, при этом он является еще одним логическим вектором длины 5.

 х[хb3 | xs4]
#> [1] 1 2 3 4 5 

Вау! Вы получаете все пять элементов x ! Это потому, что утверждение «значение либо > 3, либо <= 4» ИСТИННО для всех элементов в x .

2.7.4 Исключающее ИЛИ с помощью

xor

И последнее, но не менее важное: мы вводим исключающее ИЛИ оператор xor . Из названия легко понять, что xor является расширенной формой | . Вот несколько примеров

xor(ИСТИНА, ИСТИНА) ЛОЖЬ
xor(ИСТИНА, ЛОЖЬ) ИСТИНА
xor(ЛОЖЬ, ИСТИНА) ИСТИНА
xor(ЛОЖЬ, ЛОЖЬ) ЛОЖЬ

В отличие от оператора ИЛИ, xor() возвращает ИСТИНА , когда есть одно и только одно ИСТИНА среди значений этих двух логических векторов. Если эти два вектора имеют одинаковое значение, оба ИСТИНА или оба ЛОЖЬ , вы получите значение ЛОЖЬ .

Для двух векторов длины > 1 xor() снова выполняет поэлементное сравнение. Вы можете проверить результат самостоятельно!

 xor(c(ЛОЖЬ, ЛОЖЬ, ЛОЖЬ, ИСТИНА, ИСТИНА), c(ИСТИНА, ИСТИНА, ИСТИНА, ИСТИНА, ЛОЖЬ))
#> [1] TRUE TRUE TRUE FALSE TRUE 

Поскольку вы также получаете логический вектор после применения xor() , вы можете использовать его для подмножества векторов. Использование различных комбинаций для подмножества векторов интересно. Попробовать их!

 х[хили(хb3, хs4)]
у[xor(!xb3, ys9)]
y[xor(yb8, !ys9)] 

2.7.5 Обзор логических операторов

Давайте суммируем логические операторы между двумя векторами.