![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
1. Инверсия
А:= not B; {если B = 01011100, то A = 10100011}
2. Логическое “И” (логическое умножение, конъюнкция)
А:= B and C;
Результат работы для каждого бита определяется таблицей истинности:
i = 0.. 7
Ai | Bi | Ci |
Ai = Bi*Ci = Bi Λ Ci
Пример: В = 01101100
С = 00100000
А:= B and C
А = 00100000
Логическое “И” используют для выделения нужных разрядов по маске. Один из операндов играет роль маски выделения, где в разрешенных разрядах должны стоять единицы.
3. Логическое “ИЛИ” (логическое сложение или дизъюнкция)
А:= B or C;
i = 0.. 7
Ai | Bi | Ci |
Аi:= Bi + Ci;
4. Исключающее “ИЛИ” (операция несовпадения, сложение с блокировкой переноса)
А:= B хor C;
Операцию удобно использовать как операцию несовпадения.
i = 0.. 7
Ai | Bi | Ci |
C:= А and B
C:= А хor B
{var A,B,C: byte или var A,B,C: shortint (если работаем с двухбайтными переменными и регистрами)}
5. Операция сдвига (левый сдвиг)
C: = А shl B; {A – операнд, B – число сдвигов влево, shl (Shift Left) - левый сдвиг}
Разряды выходящие влево за разрядную сетку теряются, а освободившиеся разряды справа заполняют нулями.
A: = $AA; {1010’1010}
B: = A shl 1; {0101’0100}
Writeln (B); {8410}
Сокращенное умножение на 2
Если в результате сдвига влево код не выходит за разрядную сетку, то в результате сдвига число умножается на степень двойки. Степень равна числу сдвигов.
Пример: 0000’0101 = 510
shl 1
0000’1010 = 1010
При отсутствии арифметического процессора, умножение сдвигами может экономить машинное время в десятки раз.
6. Операция сдвига вправо
А:= B shr C; {B – исходный код, C - число сдвигов, shr (Shift Right) - правый сдвиг}
Выходящие за разрядную сетку разряды теряются, а освободившиеся слева – заполняются нулями. Каждый сдвиг вправо уменьшает число в два раза.
Дата публикования: 2014-11-28; Прочитано: 264 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!