Статья: Логический тип данных. Операции сравнения

(a=b)AND(a<>c)AND(a<>d)AND(c<>d)OR

(a=c)AND(a<>b)AND(a<>d)AND(b<>d)OR

(a=d)AND(a<>b)AND(a<>c)AND(b<>c)OR

(b=c)AND(b<>a)AND(b<>d)AND(a<>d)OR

(b=d)AND(b<>a)AND(b<>c)AND(a<>c)OR

(c=d)AND(c<>a)AND(c<>b)AND(a<>b));

READLN;

END.

Программа выведет TRUE, если введенные данные удовлетворили условию, и FALSE - в противном случае.

Рассмотрим теперь битовые операции: AND, OR, XOR, ShL и ShR, которые определены для целочисленных операндов (операции AND,OR и XOR совпадают по написанию с логическими операциями, но последние определены только для логических операндов). Операции AND, OR и XOR выполняются над каждой парой соответствующих битов операндов по тем же правилам, что и логические операции, если нулевой бит считать ложным, а единичный - истинным. Приведем простой пример:

VAR a,b : BYTE;

BEGIN a:=100;

b:=200;

WRITELN(a AND b,' ',a OR b,' ',a XOR b);

END.

Программа выведет числа 64, 236, 172. Каким образом они получены? Двоичное представление числа 100 равно 0110 0100, двоичное представление числа 200 равно 1100 1000. Выполним над этими числами, например, операцию XOR :

0110 0100

1100 1000

XOR

1010 1100.

Получили двоичное число 1010 1100 = 128+32+8+4 = 172.

Операции ShL и ShR называются операциями соответственно левого сдвига и правого сдвига. Они сдвигают биты первого операнда на количество разрядов, равное значению второго операнда, освободившиеся разряды заполняются нулевыми битами. Например:

10 ShL 3 = 80

40 ShR 3 = 5.

Число 10 кодируется как 0000 1010; сдвинем биты влево на 3 разряда, получим 0101 0000 = 64+16 = 80. Таким образом, сдвигая биты влево на n разрядов, мы умножаем число на 2 в степени n, а сдвигая вправо - делим на 2 в степени n. Этим свойством операций сдвига пользуются, когда в программе приходится часто умножать или делить целые числа на степень двойки, т.к. операции сдвига выполняются намного быстрее, чем арифметические операции.

К-во Просмотров: 118
Бесплатно скачать Статья: Логический тип данных. Операции сравнения