Логический тип

Логический тип

Логический, булев (англ. Boolean или logical data type) тип данных — примитивный тип данных в информатике, которые могут принимать два возможных значения, иногда называемых правдой (true) и ложью (false). Присутствует в подавляющем большинстве языков программирования как самостоятельная сущность или реализуется через численный тип. В подавляющем большинстве языков за истину полагается единица, за ложь — ноль.

Название Boolean получило своё название в честь английского математика и логика Джорджа Буля, среди прочего, занимавшегося вопросами математической логики в середине 19 века.

Содержание

Реализация

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

Доступные операции

К этому типу данных применимы следующие операции:

  • И (логическое умножение) (AND, &, *),
  • ИЛИ (логическое сложение) (OR, |, +),
  • исключающее ИЛИ (умножение с переносом) (xor, NEQV, ^),
  • эквивалентность (равенство) (EQV, =, ==)
  • инверсия (NOT, ~, !)
  • сравнение (>, <, <=, >=)

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

Применение

Традиционным применением булева типа данных являются значения «да»/«нет» в отношении результата более сложных операций.

Все операции сравнения двух величин (равно, больше, меньше), операции вхождения элемента в множество и проверка на пересечение множеств возвращают в качестве результата булев тип.

Реализация в различных языках программирования

Ada

Язык программирования Ada определяет Boolean в пакете Standard как нумерованный тип со значениями False и True в котором False < True.

type Boolean is (False, True);
 
p : Boolean := True;
if p then
   ...
end if;

Родственные операторы (=, /=, <, <=, >, >=) применяются ко всем нумерованым типам, включая Boolean. Булевы операторы and, or, xor и not применимы к типу Boolean и любым объявленным подтипам. Булевы операторы также применимы к массивам, содержащим значения Boolean.

Algol

Algol 60 имеет тип данных boolean и соответствующие операторы, установленные в спецификации Algol 60. Тип данных был сокращён до bool в ALGOL 68.

C

В языке программирования C, который не предоставлял булевых значений в C89 (но вводит в C99) вместо значений true/false было установлено сравнение значения с нулём. Для примера, код

if (bool_variable) printf("True!\n");
else printf("False!\n");

равнозначен коду

if (bool_variable != 0) printf("True!\n");
else printf("False!\n");

Это было честно для целочисленного типа данных (integer); тем не менее, бинарные значения чисел с плавающей запятой (floating-point) были приближёнными к выводимым на экран десятичным значениям и это давало ошибки при сравнении. Традиционно, целое содержало одну (или более) булеву переменную (одну на каждый разряд целого).

Python

В языке Python булев тип данных обозначается как bool, для приведения других типов данных к булеву существует функция bool(), работающая по следующим соглашениям:

  • строки: пустая строка — ложь, непустая строка истина.
  • числа: нулевое число — ложь, ненулевое число (в том числе и меньшее единицы) — истина.
  • списки и кортежи: пустой список (кортеж) — ложь, непустой (даже содержащий один элемент, например пустой кортеж) — истина.
  • функции — всегда истина.

Для других объектов результат рассчитывается через метод __nonzero__, который в идеале должен возвращать значения True/False.

Булев тип приводится к следующим типам данных:

  • строковый: 'True' для истины, 'False' для лжи.
  • числовой (встроеные типы int, long, float): 1 для истины, 0 для лжи.

К другим типам данных булев тип не приводится.

В Python 2.6 есть интересная особенность — можно переопределить значение True на False и наоборот, написав всего-лишь

True = False

или, вариант для всей области видимости

__builtin__.True = False

что может привести к весьма неожиданному поведению интерпретатора или IDLE. В python 3 данная возможность была ликвидирована — True и False считаются зарезервированными, как и слово None.

Pascal

Описание переменных:

var a, b : Boolean

Арифметических операций нет, но допустимы логические операции: Not, And, Or, Xor, операции отношения =, <> и функции Ord, Pred, Succ.

var
  A, B: Byte;
  C, D, E, F: Boolean;
begin
  A := Ord(False); {A=0}
  B := Ord(True); {B=1}
  C := Pred(False); {ошибка}
  D := Pred(True); {D=False}
  E := Succ(False); {E=True}
  F := Succ(True); {ошибка}
end.

Ruby

В Ruby булев тип представлен двумя предопределенными переменными: true и false. Появляется логический тип в результате логических операций или вызова логических методов. По традиции, имя логических методов (то есть методов, которые возвращают значение true или false) заканчивается на «?».

В качестве false может выступать null, а в качестве true — любой объект, в том числе переменная со значением «0» или пустая строка, что часто является неожиданностью для новичков.

См. также


Wikimedia Foundation. 2010.

Смотреть что такое "Логический тип" в других словарях:

  • Логический тип — тип данных, допускающих одно из двух возможных значений: истина или ложь . Синонимы: Булевский тип См. также: Типы данных Финансовый словарь Финам …   Финансовый словарь

  • логический тип данных — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN logical data type …   Справочник технического переводчика

  • РАЦИОНАЛЬНО-ЛОГИЧЕСКИЙ ТИП ЛИЧНОСТИ — РАЦИОНАЛЬНО ЛОГИЧЕСКИЙ (от лат. rationalis – разумно обоснованный, целесообразный) ТИП ЛИЧНОСТИ. Личность, для которой характерно предпочтение некоммуникативного способа изучения языка: учащиеся этого типа склонны к анализу языкового материала, к …   Новый словарь методических терминов и понятий (теория и практика обучения языкам)

  • Тип данных — (встречается также термин вид данных)  фундаментальное понятие теории программирования. Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и… …   Википедия

  • ЛОГИЧЕСКИЙ МЕТОД ИССЛЕДОВАНИЯ — метод воспроизведения в мышлении сложного развивающегося (развивавшегося в прошлом) объекта (органического целого, системы) в форме историч. теории. Наряду с историч. методом, воспроизводящим тот же объект в виде истории системы, Л. м. и.… …   Философская энциклопедия

  • Тип — (греч. отпечаток, модель). Проблема Т. и типизации не является специфической проблемой литературоведения. Она имеет место в науках разных областей знания. Вопрос о Т. и типизации в литературе характеризуется своими особенностями, к рые… …   Литературная энциклопедия

  • логический закон —         ЛОГИЧЕСКИЙ ЗАКОН общее название законов, образующих основу логической дедукции. Понятие о Л. з. восходит к древнегреч. понятию о логосе как о предпосылке объективной («природной») правильности рассуждений. Собственно логическое содержание …   Энциклопедия эпистемологии и философии науки

  • Логический суицид — Согласно когнитивной теории самоубийств, тип суицида, который обусловлен наличием интенсивной боли или неизлечимого соматического заболевания при отсутствии психических нарушений, неповрежденном разуме . Краткий толковый психолого психиатрический …   Большая психологическая энциклопедия

  • тип — 2.2 тип: Лампы, имеющие одинаковые световые и электрические параметры, независимо от типа цоколя. Источник: ГОСТ Р МЭК 60968 99: Лампы со встроенными пускорегулирующими аппаратами для общего освещения. Требования безопасности …   Словарь-справочник терминов нормативно-технической документации

  • тип данных — 2.35 тип данных (data type): Поименованная совокупность данных с общими статическими и динамическими свойствами, устанавливаемыми формализованными требованиями к данным рассматриваемого типа. Источник: ГОСТ Р ИСО/МЭК ТО 10032 2007: Эталонная… …   Словарь-справочник терминов нормативно-технической документации


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.