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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Формальная логика[править | править код]

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

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

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

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

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

Математическая логика[править | править код]

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

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

Программирование[править | править код]

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

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

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

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

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

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

В языках программирования[править | править код]

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

Язык НЕ И ИЛИ Искл. ИЛИ Эквив. Не экв. Другие
С++[2] ! && || ^ == !=
Fortran[3] .NOT. .AND. .OR. .XOR. .EQV. .NEQV.
Java[4] ! && || ^ == !=
Pascal[5] not and or xor = <>
PL/I[6] ¬ & | ¬ = ¬= BOOL
^ ^ ^=
Prolog[7] \+ , ;
Turbo Basic[8] NOT AND OR XOR EQV <> IMP
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 ¬XLogical connectives table.svg
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 ¬XLogical connectives Hasse diagram.svg
(file) (file) (zoom in)

Примечания[править | править код]

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

См. также[править | править код]

Ссылки[править | править код]