Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c-operators.doc
Скачиваний:
7
Добавлен:
08.11.2018
Размер:
198.14 Кб
Скачать
      1. Задание.

1. Какие значения примут переменные x, y, z и w после вычислений следующих выражений:

а) x = 1;y=1;z=1;

w=++x||++y||++z;

б) x = 1;y=1;z=1;

w=++x&&++y||++z;

в) x = 1;y=1;z=1;

w=++x&&++y&&++z;

г) x = --1;y=--1;z=--1;

w=++x&&++y||++z;

д) x = --1;y=--1;z=--1;

w=++x||++y&&++z;

е) x = --1;y=--1;z=--1;

w=++x&&++y&&++z;

2. Какие значения примут переменные x, y, z и w после вычислений следующих выражений:

x =y=z=w=1;

x*=y-=z+=w\%=1;

x-=y/=z*=++w;

% x-=y+=z*=++w;

3. В каком порядке будут вычисляться следующие выражения и каков будет

результат:

x=1;y=2;z=3;

x=y==z;

x==(y=z); (обязательны ли скобки?)

x==y<z;

x&&!y<=z;

  1. Побитовые операции

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

Однако Си, как язык системного программирования, имеет некоторый набор таких операций , которые можно разделить на три категории:

  • Операция получение обратного кода — инвертирование;

the one's complement operator — дополнение до единицы.

  • Логические побитовые операции;

  • Операции сдвига.

Унарная операция инвертирования (тильда) вызывает побитовое инвертирование своего операнда, то есть нули в машинном представлении заменяются на единицы и наоборот. Операция является префиксной и применяется только к операндам одного из целых типов (integer, long, short, unsigned, char). Чаще всего в программах этот операнд бывает беззнаковым восьмеричным или шестнадцатеричным:

0x7FF=0xF800

0xC5=0xFF3A

0x1111= 0xEEEE

0xFFFF= 0

052= 0177725

0177777=0

Заметим, что в восьмеричном представлении крайняя левая цифра (шестая у чисел 0177777 и 0177725) всегда совпадает с содержимым старшего бита внутреннего представления числа (почему?).

      1. Задание.

Пусть i=0х5B3C. Какие значения в десятичной форме соответствуют i и i, если рассматривать обе величины как беззнаковые целые.

Ответ: 23356 и 42179.

    1. Логические побитовые операции

Логические операции && и || позволяют выполнять

действия с переменными и выражениями, для которых понятие ложности

или истинности связано с равенством или неравенством операнда нулю.

Действия выполняются с операндами в целом, а не с отдельными их битами.

Для выполнения поразрядных операций в Си включены три логических

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

  • & побитовое " и"

  • ^ побитовое " исключающее или"

  • | побитовое " или"

Операции выполняются независимо над каждой парой соответствующих битов в операндах. Сначала обрабатывается пара самых младших разрядов, затем пара следующих и т.д. Побитовые операции Си имеют свойства, обычные для двоичных логический операций.

Побитовое "и" (AND) дает единицу только если оба обрабатываемых бита установлены в 1.

Побитовое " исключающее или" (XOR) имеет результатом единицу только в том случае, если один из битов 1, а другой 0.

Побитовое " или" (OR) дает нуль только если оба операнда нули, а в остальных случаях результат единица.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]