Логические операции

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002066.docx

  Логические операции

Логические операции предназначены для формирования признаков, используемых при управлении ходом выполнения программы. Эти опе- рации рассматривают операнд с точки зрения его соответствия одному из двух значений: “Истина” или ”Ложь”. Типовые логические операции:


НЕ, И, ИЛИ. Результат определяется таблицей истинности и представляет собой код, соответствующий “Истина” или ”Ложь”.

 

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

Типовые битовые операции:

-      инверсия битов (битовое НЕ),

-      битовое умножение (битовое И),

-      битовая неэквивалентность (битовое М2),

-      битовое сложение   (битовое ИЛИ).

Схемы выполнения битовых операций приведены на Рис.1.

 


 

0

1

1

0

 

 

 

 

1

0

0

1

Инверсия битов

 

 

 

 

0

1

1

0

 

 

 

 

1

0

1

0

 

 

1

1

1

0

Битовое сложение


А

 

 

 

 

 

А	1	1	0	0	А

+	+	+	+	
Å	
Å	
Å	
Å	
В	1	0	1	0	В

       	
 	
 	
 	
 	
А+В	0	1	1	0	А Å В

`А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 1.


0

0

1

1

 

 

 

 

0

1

1

0


 

0

0

1

0

Битовое умножение

 


 

 

 

 

 

Битовое сложение по модулю 2


А

 

 

 

 

 

В

 

 

 

А·В


Битовые операции использу- ются для обработки отдельных бит кода. Такая необходимость часто возникает из-за того, что поля битов в составе единого ко- да имеют разное смысловое зна- чение. Такой прием обычно ис- пользуется в кодах, описывающих состояние аппаратных средств ЭВМ. Например, байт атрибутов, который определяет режим ото- бражения символа на экране, имеет три разных по смыслу поля:

Биты с 0 по 3 – цвет символа Биты с 4 по 6 цвет фона

Бит 7 признак мерцания символа

 

Обработка бит сводится к че- тырем основным задачам:

1. Проверка состояния заданного бита

2. Установка заданных бит в ну-


левое состояние

3. Установка заданных бит в единичное состояние

4. Инверсия заданных бит

 

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

 


 

1	0	1	0	1

4     3        2       1     0

 


Проверка состояния заданного бита. Маска должна содержать единицу в проверяемом бите. Остальные биты маски нули. Выполняется битовая операция И и


результат рассматривается как целое число. Если оно отлично от нуля, то бит находится в единичном состоянии, а если равно нулю – то в нуле- вом.

Пример. Проверить состояние бита с номером 1 и бита с номером 4.

1 0 1 0 1         (Исходный код)         1 0 1 0 1

· 0 0 0 1 0                 (Маска)            · 1 0 0 0 0

0 0 0 0 0             (Результат)             1 0 0 0 0

Вывод: бит с номером 1 находится в нулевом состоянии, а бит с номером 4 в единичном.

 

Установка заданных бит в нулевое состояние. Маска должна содер- жать нули в интересующих битах. Остальные биты маски единичные. Выполняется битовая операция И и ее результат записывается на место исходного кода. Единичные биты маски гарантируют сохранение состоя- ния всех бит, кроме интересующих бит.

Пример. Установить биты с номерами 1 и 2 в нулевое состояние.

1 0 1 0 1         (Исходный код)

·  1 1 0 0 1                 (Маска)

1 0 0 0 1             (Результат)

 

Установка заданных бит в единичное состояние. Маска должна со- держать единицы в интересующих битах. Остальные биты маски нуле- вые. Выполняется битовая операция ИЛИ. Результат записывается на место исходного кода. Нулевые биты маски гарантируют сохранение со- стояния всех бит, кроме интересующих бит.

Пример. Установить биты с номерами 1 и 2 в единичное состояние.

1 0 1 0 1         (Исходный код)

Ú0 0 1 1 0                 (Маска)

1 0 1 1 1             (Результат)

 

Инверсия заданных бит. Маска должна содержать единицы в интере- сующих битах. Остальные биты маски нулевые. Выполняется битовая операция М2. Результат записывается на место исходного кода. Нулевые биты маски гарантируют сохранение состояния всех бит, кроме интере- сующих бит.

Пример. Инвертировать биты с номерами 0,1 и 4.

1 0 1 0 1         (Исходный код)

Å 1 0 0 1 1                 (Маска)

0 0 1 1 0             (Результат)

 

Достаточно часто возникает задача занесения в поле заданного кода. Решение этой задачи может потребовать установки битов в разное со- стояние. В качестве примера рассмотрим задачу занесения кода 001в биты с номерами 3,2,1.

В этом случае можно использовать один из следующих методов:

1.   Последовательная установка бит сначала в одно состояние, а потом в другое.

1 0 1 0 1          (Исходный код)

Ú 0 0 0 1 0           (Маска для установки единицы)

1 0 1 1 1          (Единица занесена)

·      1 0 0 1 1           (Маска для установки нулей) 1 0 0 1 1                 (Нули занесены)


2.   Обнуление заданного поля и занесение в него кода через операцию битового ИЛИ.

Маска в этом случае должна содержать в интересующих битах заданный код. Остальные биты нулевые.

1 0 1 0 1          (Исходный код)

·   1 0 0 0 1          (Маска для обнуления) 1 0 0 0 1                (Нули занесены)

Ú 0 0 0 1 0           (Маска для занесения кода)

1 0 0 1 1          (Код занесен)

Предпочтительным является второй метод. Он обеспечивает решение задачи при заранее неизвестном по значению коде.