Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лог_ка PI остаточний вар_ант.doc
Скачиваний:
10
Добавлен:
12.02.2016
Размер:
1.03 Mб
Скачать
  1. Логічні побітові операції

У таблиці 5.1 наведено приклади істиннісних значень логічних змінних у різних мовах програмування.

Таблиця 5.1

Істиннісні значення логічних змінних

Мова програмування

Тип змінної

Значення

С++

Bool

false (0), true (всі цифри,окрім нуля)

Java

Bool

false, true

Pascal

Boolean

false, true

В мовах програмування є ряд операцій, які дозволяють працювати з бітами. Розглянемо логічні побітові операції та логічні операції на прикладі мови програмування С++.

Основними є чотири побітові оператори:

& – побітове логічне«і»;

|побітове логічне«або»;

~ – побітове логічне заперечення;

^ – побітове логічне «альтернативне або».

Приклад 5.1. Розглянемо наступні цілі числа в бітовому представленні:

A =1010 таB= 1100,

тоді отримаємо такі результати (знову ж таки, в бітовому представленні) виконання відповідних операторів:

A&B= 1000;

A | B= 1110;

A ^ B= 0110;

~ A= 11…110101.

Звернемо увагу на четвертий приклад: тут кількість одиниць в старших розрядах залежить від типу даних, яким представлено число А. Наприклад, якщо це 32-розрядне ціле число, то загальна кількість бітів повинна бути 32, тобто в прикладі зліва стоятиме 28 одиниць. ▲

Приклад 5.2. Використання булівської функції альтернативне «або». Розглянемо таку задачу: необхідно поміняти місцями вміст двох змінних, без використання допоміжної змінної. Є варіант вирішення цієї задачі за допомогою алгебраїчних операцій, але розглянемо її рішення за допомогою операції альтернативне «або». Нехай маємо дві змінні х та у. Щоб поміняти їхні значення місцями, необхідно виконати наступні дії:

x=xy

y=yx

x=xy

Для маніпуляції бітами знадобляться ще два оператори – оператори побітового зсуву:

<< – зсув вліво;

>> – зсув вправо.

Оператор зсуву вліво a<<bзсуває біти числаaвліво наbпозицій. Аналогічно оператор зсуву вправо зсуває біти вправо. При цьому, біти, що дописуються до числа заповнюються нулями.

Приклад 5.3.

9<<2 повертає 36, тому що 1001 зрушується на 2 біта вліво і стає рівним 100100, що рівне в десятковій системі 36.

9>>2 повертає 2, тому що 1001 зрушується на два біта управо і стає 10, що рівне в десятковій системі 2. Аналогічно, -9>>2 повертає -3, тому що знак зберігається.▲

Взагалі кажучи, a<<bце те саме, що числоaдомножити на 2b. Аналогічноa>>bеквівалентно цілочисельному діленнюaна 2b. Звідси можна зробити корисний висновок:

2a= 1<<a.

Операції побітового зсуву найчастіше використовують для встановлення певного біту в числі. Наприклад, 1<<i– це число, в якомуi‑ий біт встановлений (дорівнює 1), а всі решта біти рівні нулю.

У табл. 5.2. наведено приклади побітових операцій умовах програмування.

Таблиця 5.2.

Приклади побітових операцій

Мова програ-мування

Побіто-ве логічне «і»

Побіто-ве логічне «або»

Побіто-ве логічне «не»

Побітове логічне «альтерна-тивне або»

Зсув вліво

Зсув впра-во

С++

&

|

~

^

<<

>>

Java

&

|

~

^

<<

>>

Pascal

and

or

not

xor

shl

shr

Логічні операції

Логічні операції приймають логічні (булеві) значення як операнди. Вони повертають логічне значення. Логічні значення true(істина) і false(фальш).

  • && логічне «і».Використання: вираз1&&вираз2. Логічне «і» повертає оператору true, якщо обидва логічні вирази і вираз1 і вираз2 true. Інакше, повертається false.

  • || логічне «або». Використання: вираз1||вираз2. Логічне «або» повертає оператору true, якщо хоч би один з логічних виразів є true. Якщо і вираз1 і вираз2 false, то повертається false.

  • ! логічне «не». Використання: !вираз1. Логічне «не» – унарний оператор, який заперечує вираз операнда вираз1. Тобто якщо вираз1 true, то повертається false, і якщо вираз1 false, то повертається true.

Приклад 5.4.

(2>3) &&(2>1)=false;

(2>0) &&(2>1)=true;

(2<0) &&(2<1)=false;

(2>3) || (2>1)=true;

(2>0) || (2>1)=true;

(2<0) || (2<1)=false;

a!=5; //aне рівне 5

!(5<3) // 5 не менше 3▲

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