Логічний тип даних в інформатиці
Низький рівень
Булевий) тип даних — це значимий тип. В ОЗП змінні типу bool зберігаються в стеку, тобто обіг та розміщення такої змінної відбувається дуже швидко. Легко припустити, що для реалізації такого простого типу достатньо 1 біт (0 або 1), але насправді із-за особливостей архітектури процесорів під логічний тип даних резервується мінімальна адресується комірка пам'яті - байт, а якщо точніше вказувати, то машинне слово. Це полегшує роботу процесора і ОПЕРАТИВНОЇ пам'яті. Наприклад: 00000000 — false 00000001 або 00010001 або 100000 - true Але при виконанні присвоювання в булеву змінну значення ІСТИНА в машинному коді завжди записується значення 00000001.Логічний тип даних. Логічні операції
У поширених мовах програмування тип boolean підтримує кілька операцій, ми розберемо наступні: ЛОГІЧНЕ І (AND && *). ЛОГІЧНЕ АБО (OR | +). ВИКЛЮЧАЄ АБО (XOR ^). РІВНІСТЬ (EQV ==). НЕРАВЕСТВНО (NOT !=). ОПЕРАЦІЇ ПОРІВНЯННЯ (> < =).Булеві типи даних. Приклади. Логічне І
Оператор && повертає істину, якщо обидва аргументи є істиною. using System;
namespace Boolean
{
class MainClass
{
public static void Main(string[]args)
{
Console.WriteLine(true&&false);
Console.ReadLine();
}
}
}
В даному прикладі друга умова — БРЕХНЯ, значить, в консоль виведеться false.
Логічне АБО
Оператор || повертає істину, якщо хоча б один з аргументів є істиною.
using System;
namespace Boolean
{
class MainClass
{
public static void Main(string[]args)
{
Console.WriteLine(true||false);
Console.ReadLine();
}
}
}
В даному прикладі одне з умов — ІСТИНА, отже, в консоль виведеться true.
Виключне АБО
Оператор ^ (не плутати з возведенням в ступінь) повертає істину, якщо тільки один з аргументів є істиною.
using System;
namespace Boolean
{
class MainClass
{
public static void Main(string[]args)
{
Console.WriteLine(true^true);
Console.ReadLine();
}
}
}
В даному прикладі обидва аргументи-істинні, значить, в консоль виведеться false.
<script type="text/jаvascript">
var blockSettings2 = {blockId:"R-A-271049-5",renderTo:"yandex_rtb_R-A-70350-39",async:!0};
if(document.cookie.indexOf("abmatch=") >= 0) blockSettings2.statId = 70350;
!function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings2)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/jаvascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");
Рівність і нерівність
Оператор == повертає істину, якщо обидва умови рівні. Оператор != повертає істину, якщо обидві умови не рівні.
using System;
namespace Boolean
{
class MainClass
{
public static void Main(string[]args)
{
Console.WriteLine(true!=false);
Console.ReadLine();
}
}
}
В консолі буде true, тому що умова виконується.
Вище були розглянуті приклади на мові C#. У цій мові для операцій логічного типу визначені два значення — true і false. І тут забороняється перетворювати булеві значення в цілочисельні, компілятор видасть помилку. Як нескладно помітити, при передачі в метод WriteLine класу Console булевої змінної на консоль виводиться її значення.
Також булева змінна може керувати оператором if. Якщо умова виконання вирази з if — істинність змінної, то вираз можна скоротити до:
if(x) {/*do smth*/}
Операції порівняння
Оператори >= < могут использовать любые численные типы данных, включая булевы.
У мові C, якщо змінна містить 0 то її логічне значення еквівалентно БРЕХНЯ, і навпаки, будь-яке число трактується як ІСТИНА. Для кращого розуміння нижче наведено фрагмент коду:
if (bool_variable) printf("True!n"); else printf("False!n")
В C відсутнє поняття логічного типу даних, замість нього використовуються числові типи, в основному integer. Тому в логічних операціях будь-який операнд числового типу, що має значення, не рівне нулю, інтерпретується як ІСТИНА, а результатом логічних операцій є цілі числа, один і нуль відповідно. В C++ був введений логічний тип даних, але скоріше для зручності роботи. Він ніяк не впливає на використання інших типів логічних виразах, як і в C.
<script type="text/jаvascript">
var blockSettings3 = {blockId:"R-A-271049-6",renderTo:"yandex_rtb_R-A-70350-44",async:!0};
if(document.cookie.indexOf("abmatch=") >= 0) blockSettings3.statId = 70350;
!function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings3)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/jаvascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");
Порядок виконання операторів логічних типів даних відбувається зліва направо. Наприклад, обчислення виразу
var x && var y && var z
зупиниться, як тільки виявиться перший операнд у значенні БРЕХНЯ, а обчислення
var x || var y || var z
буде виконуватися, поки компілятор не зустріне перше справжнє значення.
Паскаль
У різних мовах програмування тонкощі роботи булевими операторами змінними можуть трохи відрізнятися. Логічний тип даних в Паскалі, наприклад, має цікаву особливість: тут можна порівнювати ІСТИНУ і БРЕХНЮ, причому БРЕХНЯ менше ІСТИНИ. Також значенню БРЕХНЯ відповідає нулю, а значення ІСТИНА - будь-яке число, відмінне від нуля.Access
Логічний тип даних в Access працює за схожими принципами. ЛОГІЧНЕ І And. ЛОГІЧНЕ АБО Or. РІВНІСТЬ Eqv. НЕРІВНІСТЬ Not. ВИКЛЮЧНЕ АБО Xor. Виконуються вони так само, як і в інших популярних мовах програмування.Python
В мові Python логічний тип даних оголошується стандартно — bool. Щоб приводити інші типи до булеву типу, використовується функція bool(): Порожній рядок — БРЕХНЯ, не пустий — ІСТИНА. Нуль — БРЕХНЯ, будь-яке число, відмінне від нуля — ІСТИНА. Порожній масив — БРЕХНЯ, непорожній — ІСТИНА. Функція — ІСТИНА. Це всі типи даних, до яких можна привести булев тип в Python.Ruby
У значенні БРЕХНЯ виступає nil, а ІСТИНОЮ може бути будь-який об'єкт. Причому змінна зі значенням 0 або порожній рядок теж вважається ІСТИНОЮ, і це може викликати труднощі у людей, початківців вивчати цю мову. Операції з логічними типами даних можуть незначно відрізнятися в залежності від мови. Тому завжди необхідно знайомитися з тонкощами використання типів даних в мові, що вивчається, щоб не мати труднощів у подальшому застосуванні.




