Читайте также: |
|
ПРЕДСТАВЛЕНИЕ БИТОВЫХ ТИПОВ. В ряде задач может потребовать-
ся работа с отдельными двоичными разрядами данных. Чаще всего та-
кие задачи возникают в системном программировании, когда, напри-
мер, отдельный разряд связан с состоянием отдельного аппаратного
переключателя или отдельной шины передачи данных и т.п. Данные
такого типа представляются в виде набора битов, упакованных в
байты или слова, и не связанных друг с другом. Операции над таки-
ми данными обеспечивают доступ к выбранному биту данного. В языке
PASCAL роль битовых типов выполняют беззнаковые целые типы byte и
word. Над этими типами помимо операций, характерных для числовых
типов, допускаются и побитовые операции. Аналогичным образом роль
битовых типов играют беззнаковые целые и в языке C.
В языке PL/1 существует специальный тип данных - строка би-
тов, объявляемый в программе, как: BIT(n).
Данные этого типа представляют собой последовательность бит
длиною n. Строка битов занимает целое число байт в памяти и при
необходимости дополняется справа нулями.
ОПЕРАЦИИ НАД БИТОВЫМИ ТИПАМИ. Над битовыми типами возможны
три группы специфических операций: операции булевой алгебры, опе-
рации сдвигов, операции сравнения.
Операции булевой алгебры - НЕ (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-18; просмотров: 141 | Поможем написать вашу работу | Нарушение авторских прав |