Логическая операция

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

Формальная логика

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

Операция, раскрывающая сущность понятия:

К операциям, которые связаны преимущественно с изменением содержания понятий, относятся:

К операциям, которые связаны преимущественно с изменением объёмов понятий, относятся:

Данные операции могут быть записаны математически с помощью теории множеств.

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

Математическая логика

Логическая операция (логический оператор, логическая связка, пропозициональная связка) — операция над высказываниями, позволяющая составлять новые высказывания путём соединения более простых[1].

В качестве основных обычно называют конъюнкцию ( или &), дизъюнкцию (), импликацию (), отрицание (). В смысле классической логики логические связки могут быть определены через алгебру логики. В асинхронной секвенциальной логике определена логико-динамическая связка в виде операции венъюнкции ().

Программирование

Логическая операция — в программировании операция над выражениями логического (булевского) типа, соответствующая некоторой операции над высказываниями в алгебре логики. Как и высказывания, логические выражения могут принимать одно из двух истинностных значений — «истинно» или «ложно». Логические операции служат для получения сложных логических выражений из более простых. В свою очередь, логические выражения обычно используются как условия для управления последовательностью выполнения программы.

В некоторых языках программирования (например, в языке C++ или Си) вместо логического типа или одновременно с ним используются числовые типы. В этом случае считается, что отличное от нуля значение соответствует логической истине, а ноль — логической лжи.

Значение отдельного бита также можно рассматривать как логическое, если считать, что 1 означает «истинно», а 0 — «ложно». Это позволяет применять логические операции к отдельным битам, к битовым векторам покомпонентно и к числам в двоичном представлении поразрядно. Такое одновременное применение логической операции к последовательности битов осуществляется с помощью побитовых логических операций. Побитовые логические операции используются для оперирования отдельными битами или группами битов, применяются для наложения битовых масок, выполнения различных арифметических вычислений.

Среди логических операций наиболее известны конъюнкция (&&), дизъюнкция (||), отрицание (!). Их нередко путают с битовыми операциями, хотя это разные вещи. Например, следующий код на языке Си:

if (action_required && some_condition()) 
{
    /* какие-то действия */
}

не выполнит вызов подпрограммы some_condition(), если значение логической переменной action_required ложно. При такой операции второй аргумент операции «&&» вообще не будет вычислен.

В языках программирования

В следующей таблице для некоторых языков программирования приведены встроенные операторы и функции, реализующие логические операции.

Язык НЕ И ИЛИ Искл. ИЛИ Эквив. Не экв. Другие
C++[2] ! && || ^ == !=
Fortran[3] .NOT. .AND. .OR. .XOR. .EQV. .NEQV.
Java[4] ! && || ^ == !=
Pascal[5] not and or xor = <>
PL/I[6] ¬ & | ¬ = ¬= BOOL
^ ^ ^=
Prolog[7] \+ , ;
Python[8] not and or ^ == !=
Turbo Basic[9] NOT AND OR XOR EQV <> IMP
JavaScript ! && || ^ == !=
C# ! && || ^ == !=
input Ainput Boutput f(A,B)X and ¬XA and B¬A and BBA and ¬BAA xor BA or B¬A and ¬BA xnor B¬A¬A or B¬BA or ¬B¬A or ¬BX or ¬X
X or ¬X¬A or ¬BA or ¬B¬A or BA or B¬B¬AA xor BA xnor BAB¬A and ¬BA and ¬B¬A and BA and BX and ¬X
(file) (file) (zoom in)

См. также

Примечания

  1. Мендельсон Э. Введение в математическую логику. — М.: «Наука», 1971. — С. 19. Архивировано 1 мая 2013 года.
  2. C++98 Standard Draft (недоступная ссылка)
  3. FORTRAN 77 Full Language Standard. Logical Operators. Дата обращения: 21 января 2010. Архивировано из оригинала 24 января 2010 года.
  4. Java Language Specification. Second Edition Архивная копия от 30 августа 2009 на Wayback Machine, разделы 15.15, 15.21.2, 15.22-15.24
  5. Pascal Language Reference. Operators. Дата обращения: 21 января 2010. Архивировано из оригинала 3 мая 2017 года.
  6. PL/I Language Reference. Дата обращения: 20 января 2010. Архивировано 25 сентября 2018 года.
  7. GNU-Prolog Manual Архивная копия от 23 января 2010 на Wayback Machine, разделы 6.2.2, 7.18.2
  8. operator — Standard operators as functions (англ.). Python. Дата обращения: 21 октября 2020. Архивировано 20 октября 2020 года.
  9. Turbo Basic. Owner’s Handbook. р.77

Ссылки