Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператори порівняння

ОПЕРАЦІЇ ЗСУВУ ВЛІВО Й ВПРАВО

Порозрядні логічні операції

& - логічне И (множення)

| - логічне АБО (додавання)

^ - виключне АБО ("винятково АБО")

~ - логічне НІ (інверсія)

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

 

A B A^B A & B A | B ~A
           
           
           
           

 

Повернемося до прикладу з вимикачами. Для всієї панелі відведемо однобайтну змінну, наприклад, типу char:

char SW = 0;

Привласнивши спочатку змінної SW значення 0 (або у двійковому виді 00000000), ми тим самим указуємо, що всі вимикачі перебувають у виключеному стані.

Припустимо, тепер нам треба включити третій вимикач на панелі. Тобто треба зробити так, щоб змінна SW у двійковому виді виглядала як 00000100, або в шістнадцятирічному вигляді 0х04. Застосуємо для цього операцію "логічне АБО":

SW = SW | 0х04; // включити SW3

SW = SW | 0х01; // включити SW1

Припустимо, що далі по ходу програми значення байта SW змінювалося якимсь чином і перед нами стала задача виключити третій і перший вимикач, не маючи інформації про їхній поточний стан. Для скидання окремих біт у байті на практиці застосовують операцію "логічне И".

SW = SW & 0xFA; // 0xFA = 11111010

Тепер перший і третій біти SW, незалежно від того, у якому стані інші біти, будуть встановлені в нуль.

І на закінчення змінимо стан четвертого вимикача на протилежне, незалежно від його вихідного значення, застосувавши операцію "виключне АБО":

SW = SW 0х08; // 0х08 = 00001000

Слід також зазначити, що на практиці часто використовується скорочена форма запису для присвоєння результату порозрядних логічних операторів:

&= побітове И с присвоюванням

| = побітове логічне АБО із присвоюванням

^= побітове, що виключає АБО із присвоюванням

Для здійснення зсуву послідовності біт уліво й вправо застосовуються відповідно операції << і >> Операнд праворуч від знака операції вказує, на яку величину повинні бути зсунуті біти, задаючи тим самим кількість біт, "виведених" зі змінної, і число нульових біт, що заповнюють змінну з іншої сторони.

Наприклад:

unsigned char A = 12; // А = 00001100

А = А << 2; // А = 00110000

А = А >> 3; // А = 00000110

Слід ураховувати, що при використанні правого зсуву, якщо самий старший біт дорівнює одиниці (ознака негативного числа в змінних зі специфікатором signed), деякі компілятори можуть не "увести" нулі ліворуч. Щоб уникнути подібних ситуацій, рекомендується перетворювати операнд операції в беззнаковий тип (unsigned).

< - Менше

<= Менше або рівно

> Більше

>= Більше або рівно

== Рівно

!= Не рівно

Для того щоб була можливість порівнювати між собою значення яких-небудь змінних, мова C++ передбачає так звані оператори порівняння - бінарні оператори виду:

<Операнд1><ОператорСравнения><Операнд2>

У результаті роботи операторів порівняння вертається логічне значення true (істина), якщо, що перевіряється умова вірна, або false (неправда) а якщо ні.

ОПЕРАЦІЯ "КОМА"

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

Завдяки використанню даної операції при написанні програм досягається висока ефективність. Приміром, в операторі if, розглянутому нижче, можна в якості виразу ввести:

if (i = Callfunc, i > 7)

Тоді спочатку виконається виклик функції Callfunc із присвоєнням результату змінної i, а потім відбудеться порівняння значення i із числом 7.

Ще більшої ефективності можна досягти при використанні операції "кома" в операторі циклу for. Більш докладно цей момент буде розглянутий нижче.

<== предыдущая лекция | следующая лекция ==>
Порозрядні логічні операції | Тема № 2
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 481; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.