Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
№2_C++(Log_i_pobitovi_oper).doc
Скачиваний:
5
Добавлен:
24.04.2019
Размер:
294.4 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Національний Університет “Львівська політехніка”

Кафедра “Телекомунікації”

ЛОГІЧНІ І ПОБІТОВІ ОПЕРАЦІЇ ТА ВИРАЗИ МОВИ С.

Методичні вказівки до лабораторної роботи з курсу

«Інформатика, ч.І»

для студентів спеціальності

«Телекомунікації»

Львів 2004

“Логічні і побітові операції та вирази мови С”. Методичні вказівки до лабораторної роботи з курсу “Інформатика, ч.І” для студентів спеціальності “Телекомунікації”: Львів 2004. 12с.

Автори: старший викладач Єрмакова Н.А.,

доцент Чайковський І.Б.

Рецензент: професор, д.т.н. Тимченко О.В.

У лабораторній роботі розглянуто властивості операцій порівняння, логічних і побітових операцій мови програмування С.

Методичні вказівки розглянуто на засіданні кафедри “Телекомунікації” Національного університету “Львівська політехніка” від______2004р. протокол №____.

МЕТА РОБОТИ: дослідити властивості операцій порівняння, логічних і побітових операцій мови програмування С.

Попередні відомості.

1. Операції порівняння – бінарні, причому обидва операнди повинні бути чисельними, а результат матиме цілий тип в логічній трактовці (“Так” – ненульове значення 1, “Ні” – 0):

вираз < вираз

вираз > вираз

вираз <= вираз

вираз >= вираз

Результатом всіх цих операцій є 0, якщо задане відношення хибне, і 1, якщо істинне. Тип результату int.

Операції рівності і нерівності відносять до цієї ж групи. Важливо правильно витримувати синтаксис знаку «логічне дорівнює» і розуміти, що ця операція не виконує присвоювання:

вираз == вираз

вираз != вираз

Результатом всіх цих операцій є 0, якщо задане відношення хибне, і 1, якщо істинне. Тип результату int. Ці операції мають нижчий пріоритет, ніж операції попередньої групи, наприклад, у виразі a < b = = c < d спочатку здійснюються порівняння a < b та c < d, результати кожного з них мають значення 0 або 1, після чого операція = = дає результат 0 або 1.

Наступну групу складають логічні операції, для яких характерне те, що і операнди, і результат мають цілий тип і трактуються як логічні (“Так” – 1, “Ні” – 0).

3. Операція логічне І виконується згідно таблиці істинності:

X

Y

X&&Y

0

0

0

0

1

0

1

0

0

1

1

1

вираз && вираз

Ця операція повертає 1, якщо обидва операнди ненульові, та 0 в противному випадку. Операція гарантує обчислення зліва направо, а якщо лівий операнд є 0, правий не обчислюється. Операнди не повинні бути обов'язково однакового типу, але повинні мати один з основних типів. Результат завжди типу int.

4. Опреація логічне АБО виконується згідно таблиці істинності:

X

Y

X||Y

0

0

0

0

1

1

1

0

1

1

1

1

вираз || вираз

Ця операція повертає 1, якщо хоча би один з операндів ненульовий, і 0 в противному випадку. Операція гарантує обчислення зліва направо, а якщо перший операнд не є 0, другий операнд не обчислюється. Тип int.

5. Умовна операція є тернарною (з трьома операндами):

вираз ? вираз : вираз

Обчислюється значення першого виразу, і, якщо воно не є 0, то результатом буде значення другого виразу, в противному випадку - значення третього виразу. Якщо це можливо, виконуються звичайні арифметичні перетворення для приведення другого та третього виразів до загального типу. Обчислюється тільки один з виразів: другий або третій.

Коли виникає необхідність роботи з величинами, що записані побітово, в частинах машинного слова, застосовуються «побітові операції». До таких відносяться:

  1. Операції зсуву:

вираз << вираз

вираз >> вираз

Правий операнд перетворюється до типу int. Тип результату співпадає з типом лівого операнду. Результат не визначений, якщо правий операнд від'ємний або більший, або дорівнює довжині об'єкту в бітах.

Значенням E1 << E2 є E1 (яке розглядається як бітове представлення), зсунуте вліво на E2 біт; звільнене місце заповнюється нулями.

Значенням E1 >> E2 є E1, зсунуте вправо на E2 бітових позицій. Гарантується, що зсув вправо буде логічним (заповнення нулями), якщо E1 має тип unsigned, впротивному випадку він може бути арифметичним (заповнення копією знакового біту).

2. Доповнення (побітове НЕ):

~ операнд

Це унарна операція, яка доповнює значення біту кожного розряду операнду до 1. Операнд повинен мати тип int.

3. Побітове І:

вираз & вираз

Результатом є побітова функція І операндів. Результат обчислюється побітово – для кожного розряду операндів згідно таблиці істинності операції логічне І і записується у відповідний розряд. Операція застосовується тільки до операндів типу int.

X

Y

X^Y

0

0

0

0

1

1

1

0

1

1

1

0

4. Виключене побітове АБО (XOR):

вираз ^ вираз

Результатом є побітова функція виключене побітове АБО, яка виконується для кожного розряду операндів згідно наведеної таблиці істинності. Застосовується тільки до операндів типу int. Увага! В інших мовах програмування значок ^ застосовують для виконання операції зведення в степінь, але в мові С зведення в другий або третій степінь зручно виконувати простим перемноженням, а в інших випадках для зведення числа х в степінь у слід використовувати вбудовану функцію pow(x,y).

5. Побітове АБО:

вираз | вираз

Результатом є відповідна побітова функція АБО, яка виконується для кожного розряду операндів згідно наведеної для логічного АБО таблиці істинності. Застосовується тільки до операндів типу int.

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