Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7 (Курс лекций). Воронов Г.И.Санкт-Петербург 2010г.doc
Скачиваний:
91
Добавлен:
15.04.2015
Размер:
754.69 Кб
Скачать

Битовые операции

Операции, примененные к каждому биту целочисленных данных, называются битовыми. В Паскале таких операций предусмотрено 6 видов. Одна из них - унарная, остальные - бинарные. Назначение и примеры использования этих операций рассмотрены в справочном пособии по языку.

инверсия

not - унарная операция инверсии всех битов целочисленного значения. Тип результата тот же, что и у исходного числа.

побитовое логическое умножение

and - побитовое логическое умножение двух операндов. Тип результата совпадает с типом операнда, имеющего меньший размер. Если в операции участвуют знаковое и беззнаковое целое, результат считается беззнаковым. При вычислениях используются таблицы истинности (аксиомы булевой алгебры).

побитовое логическое сложение

or - побитовое логическое сложение. Тип результата - как и в операции and.

побитовое исключающее «или»

xor - побитовое исключающее «или». Тип результата - как в операции and. Вычисления производятся в соответствии с таблицей истинности, приведенной выше.

сдвиг влево

К битовым операциям относятся также операции сдвигов.

shl - сдвиг влево. Выражение M shl K сдвигает содержимое переменной M на K битов влево. Освобождающиеся справа биты заполняются нулями.

Сдвиг влево на один разряд эквивалентен умножению числа на 2, сдвиг на n разрядов - умножению на 2 в степени n.

сдвиг вправо

shr- сдвиг вправо. Выражение M shr K сдвигает содержимое переменной M на K битов вправо. Освобождающиеся слева биты заполняются нулями.

Лекция 11

Приоритеты операций

Вычисление любого выражения выполняется с учетом приоритетов операций, входящих в это выражение. Чтобы изменить порядок вычислений используются круглые скобки и выражение в скобках вычисляется и рассматривается как отдельный операнд. Кроме того, предварительно определяются все переменные и константы, разыскиваются элементы массивов, входящие в выражение. Затем вычисляются функции, к которым есть обращения, и далее выражение начинает выполняться слева направо, но с учетом приоритетов. Приоритеты операций приведены в таблице. Первый приоритет - самый высокий.

Таблица 8. Приоритеты операции Турбо-Паскаля

приоритет

тип операций (действий)

список операций

1

Вычисления в скобках

( ), []

2

Вычисления функций

любые функции

3

Унарные операции

@,^,not,унарный"-"

4

Операции типа умножения

*,/,div,mod,and,shl,shr

5

Операции типа сложения

+,-,or,xor

6

Операции отношений

=, <>, >, >=, <, <=

7

Операция присваивания

:=

Примеры (цифры под выражением указывают порядок вычислений):

A x B

дробное выражение ----- записывается как A*B/C/D или A*B/(C*D)

C x D 1 2 3 1 3 2

пример логического выражения:

(X<1.5) or ( 2.5-3.2*X+Y * -sin(0.5/Z-1)* 0.01/ exp(sqr(-X /2.0))>Y ) and

1 21 3 2 15 8 7 6 4 5 9 14 13 12 10 11 16 20

not(-X <> P1)

19 17 18

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

Лекция 12