Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основыпрогр 1курс 2семестр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
17.84 Mб
Скачать

Поразрядное включающие или (|)

Данный оператор берет из одинаковых разрядов левого и правого операнда значения и если одно из значений равно 1 то в результате будет 1. Его так же легко запомнить так: Если единица там ИЛИ единица тут то единица. Таким образом чтобы получить единицу, данному оператору достаточно что бы она была хотя бы у одного операнда в промеряемом разряде.

Операция: 0101 | 0011

Разряд 4

Разряд 3

Разряд 2

Разряд 1

Левый операнд

0

1

0

1

Правый операнд

0

0

1

1

Результат

0

1

1

1

Как видно из таблицы, данный оператор устанавливает 1 в результат в тех случаях если хотя бы в одном операнде была 1. И так результатом применения операции 0101 | 0011 будет 0111.

Поразрядное исключающие ИЛИ (^)

Данный оператор берет из одинаковых разрядов левого и правого операнда значения и если эти значения одинаковые то в результате будет 0, а если значения разные то 1.

Операция: 0101 ^ 0011

Разряд 4

Разряд 3

Разряд 2

Разряд 1

Левый операнд

0

1

0

1

Правый операнд

0

0

1

1

Результат

0

1

1

0

Как видно из таблицы, данный оператор устанавливает 1 в результат в тех случаях где значения операндов в определенном разряде разные и 0 там где они совпадают. И так результатом применения операции 0101 ^ 0011 будет 0110.

Одноместное поразрядное дополнение до единицы (~)

Данный оператор унарен, то есть он имеет лишь один операнд. Данный оператор просто инвертирует значения всех битов своего операнда на противоположные, 1 станет 0 и наоборот.

Операция: ~0101

Разряд 4

Разряд 3

Разряд 2

Разряд 1

Операнд

0

1

0

1

Результат

1

0

1

0

Как видно из таблицы, данный оператор устанавливает 1 в результат в тех случаях где в операнде был 0 и наоборот. И так результатом применения операции ~0101 будет 1010.

Сдвиг влево (‹‹)

Задача данного оператора cдвинуть биты своего операнда на какое-то количество влево, начиная с младшего правого бита. Пустые места после сдвига заполняются нулями. Если размера числа будет недостаточно чтобы сохранить сдвинутые биты в левую сторону, они будут утеряны.

И так посмотрим что же будет происходить. Мы собираемся взять число 0101 и сдвинуть его влево на 2 разряда.

Шаг 1: Операnор перемещает все значения на один разряд влево и получается следующие (0)101Х В скобочках число которое вышло за пределы ячейки отведенной для нашего 4 битного значения и было утеряно, а Х вакантное место и это вакантное место оператор заполнит нулем и получится: (0)101[0] И так мы видим, в круглых скобках что вышло и утеряно а в квадратных то что оператор вставил.

Шаг2: На момент шага два мы имеем число 1010. Оператор производит второй сдвиг и мы получаем вот такую ситуацию (01)010X Как мы видим единица теперь оказалась в круглых скобках и ушла в никуда и опять образовалась вакансия в правой стороне, оператор в очередной раз радостно заполнит ее нулем и получим в итоге: (01)01[00]

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

Операция : 0101 ‹‹ 2

Разряд 4

Разряд 3

Разряд 2

Разряд 1

Операнд

0

1

0

1

Результат

0

1

0

0

Как видно из таблицы, все биты сместились в лево на 2 позиции, и как вы можете заметить мы потеряли одну единицу, так как в нашем примере наши числа имеют длину лишь 4 бита. И так в результате применения операции 0101 ‹‹ 2 будет 0100.