NOT - логічне заперечення; p>
AND - логічне "і"; p>
OR - логічне "або"; p>
XOR - логічне що виключає "або". p>
Правила виконання цих операцій такі: p>
NOT - унарний (тобто застосовна до одного операнд)
операція: p>
NOT FALSE = TRUE,
NOT TRUE = FALSE. P>
Правила виконання бінарних операцій AND, OR і XOR
наведені в таблиці 3. p>
Таблиця p>
Правила виконання бінарних операцій p>
Операнд p>
Результат операції p>
p>
a p>
b p>
a AND b p>
a OR b p>
a XOR b p>
FALSE p>
FALSE p>
FALSE p>
FALSE p>
FALSE p>
FALSE p>
TRUE p>
FALSE p>
TRUE p>
TRUE p>
TRUE p>
FALSE p>
FALSE p>
TRUE p>
TRUE p>
TRUE p>
TRUE p>
TRUE p>
TRUE p>
FALSE p>
Пріоритет операції NOT (як і будь-якої унарний операції)
найвищий, наступний пріоритет у операції AND, та найнижчою пріоритет - у
операцій OR і XOR. Вирази можуть містити не тільки різні логічні
операції, але й операції порівняння та арифметичні, тому відзначимо, що
пріоритет логічних і арифметичних операцій вище, ніж операцій порівняння.
Існує функція, визначена для цілочисельних аргументів і має
логічне значення, - це функція p>
30. Odd (x). P>
Вона повертає TRUE, якщо значення x непарне, і
FALSE, якщо воно парне. Логічні значення можна виводити процедурою WRITE, але
вводити логічні змінні процедурою READ не можна. Тепер спробуємо записати
програму, що використовує логічні дані. p>
VAR a, b, c, d: INTEGER; p>
BEGIN WRITELN ( 'Введіть 4 цілих числа, a, b, c і
d, серед ', p>
'яких має бути 2 і
тільки 2 однакових !'); p>
WRITE ( 'a =');
READ (a); WRITELN; p>
WRITE ( 'b ='); READ (a); WRITELN; p>
WRITE ( 'c ='); READ (a); WRITELN; p>
WRITE ( 'd ='); READ (a); WRITELN; p>
WRITELN ( 'Вашу тямущість можна оцінити як', p>
(a = b) AND (a <> c) AND (a <> d) AND (c <> d) OR p>
(a = c) AND (a <> b) AND (a <> d) AND (b <> d) OR p>
(a = d) AND (a <> b) AND (a <> c) AND (b <> c) OR p>
(b = c) AND (b <> a) AND (b <> d) AND (a <> d) OR p>
(b = d) AND (b <> a) AND (b <> c) AND (a <> c) OR p>
(c = d) AND (c <> a) AND (c <> b) AND (a <> b )); p>
READLN; p>
END. p>
Програма виведе TRUE, якщо введені дані
задовольнили умові, і FALSE - в іншому випадку. p>
Розглянемо тепер бітові операції: AND, OR, XOR, ShL
і ShR, які визначені для цілочисельних операндів (операції AND, OR і XOR
збігаються з написання з логічними операціями, але останні визначені тільки
для логічних операндів). Операції AND, OR і XOR виконуються над кожною парою
відповідних бітів операндів за тими ж правилами, що і логічні операції,
якщо нульовий біт вважати помилковим, а одиничний - істинним. Наведемо простий
приклад: p>
VAR a, b: BYTE; p>
BEGIN a: = 100; p>
b: = 200; p>
WRITELN (a AND b, '', a OR b, '', a XOR b); p>
END. p>
Програма виведе числа 64, 236, 172. Яким чином
вони отримані? Двійкове подання числа 100 одно 0110 0100, двійкове
подання числа 200 одно 1100 1000. Виконаємо над цими числами, наприклад,
операцію XOR: p>
0110 0100 p>
1100 1000 p>
XOR p>
1010 1100. p>
Отримали двійкове число 1010 1100 = 128 +32 +8 +4 = 172. p>
Операції ShL і ShR називаються операціями
відповідно лівого зсуву і правого зсуву. Вони зрушують біти першого
операнда на кількість розрядів, рівне значенню другу операнда,
звільнилися розряди заповнюються нульовими битами. Наприклад: p>
10 ShL 3 = 80 p>
40 ShR 3 = 5. p>
Число 10 кодується як 0000 1010; зрушимо біти вліво
на 3 розряду, отримаємо 0101 0000 = 64 +16 = 80. Таким чином, зрушуючи біти вліво
на n розрядів, ми множимо число на 2 в ступені n, а зрушуючи вправо - ділимо на
2 в ступені n. Цією властивістю операцій зсуву користуються, коли в програмі
доводиться часто множити або ділити цілі числа на ступінь двійки, тому що операції
зсуву виконуються набагато швидше, ніж арифметичні операції. p>
Список літератури h2>
Для підготовки даної роботи були використані
матеріали з сайту http://elib.albertina.ru/
p>