![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
У ряді задач може знадобитися робота з окремими двійковими розрядами даних. Найчастіше такі задачі виникають у системному програмуванні, коли, наприклад, окремий розряд пов'язаний зі станом окремого апаратного перемикача чи окремої шини передачі даних. Дані такого типу представляються у вигляді набору бітів, упакованих у байти чи слова, і не пов'язаних один з одним. Операції над такими даними забезпечують доступ до обраного біта даних. У мові PASCAL роль бітових типів виконують беззнакові цілі типи byte та word. Над цими типами крім операцій, характерних для числових типів, допускаються і побітові операції. Аналогічним чином роль бітових типів відіграють беззнакові цілі в мові C. У мові PL/1 існує спеціальний тип даних – рядок бітів, що повідомляється в програмі, як: BІТ(n). Дані цього типу представляють собою послідовність бітів довжиною n. Рядок бітів займає ціле число байтів у пам'яті та при необхідності доповнюється праворуч нулями.
Операції над бітовими типами. Над бітовими типами можливі три групи специфічних операцій: операції булевої алгебри, операції зсуву, операції порівняння.
Операції булевої алгебри:
– заперечення - НI (not),
– логічне додавання чи диз’юнкція - АБО (or),
– логічне множення чи кон’юнкція - ТА (and),
– виключне АБО (xor).
Ці операції і за назвою, і за змістом схожі на операції над логічними операндами, але відмінність у їхньому застосуванні до бітових операндів полягає в тому, що операції виконуються над окремими розрядами операндів.
Нижче наведені приклади виконання побітових логічних операцій:
а) x = 01101100 в) x = 01101100
not x = 10010011 y = 11001110
x and y = 01001100
б) x = 01101100 г) x = 01101100
y = 11001110 y = 11001110
x or y = 11101110 x xor y = 10100010
У деяких мовах (PASCAL) побітові логічні операції позначаються так само, як і операції над логічними операндами та розпізнаються за типом операндів. В інших мовах (C) для побітових і загальних логічних операцій використовуються різні позначення. Ще в інших (PL/1) – побітові операції реалізуються вбудованими функціями мови.
Операції зсувів виконують зсув двійкового коду на задану кількість розрядів вліво чи вправо. З трьох можливих типів зсуву (арифметичний, логічний, циклічний) у мовах програмування звичайно реалізується тільки логічний (наприклад, операції shr, shl у PASCAL).
В операціях порівняння бітові дані інтерпретуються як цілі без знака, і порівняння виконується як порівняння цілих чисел. Бітові рядки в мові PL/1 – більш загальний тип даних, до якого застосовні також операції над рядковими даними, що розглянуті в главі 4.
Дата публикования: 2014-12-10; Прочитано: 1128 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!