Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Использование битовых операторов



Битовые операторы выполняются подобно любым другим арифметическим опера- торам. Самым легким для понимания является  оператор                                                                                         Выполнить операцию

~ над числом означает выполнить ее над каждым битом числа.

(0x6)

(Сх9)

Таким образом получаем, что             равно 0x9.

В следующем примере продемонстрировано выполнение оператора

 

&

ООНг

 

Вычисляем, начиная со старших битов: 0 & 0 равно 0. В следующем  бите 1                     0

равно 0. В третьем бите 1         1 дает 1, а в последнем бите 0 & 1 дает 0.

Те же вычисления могут быть выполнены в шестнадцатеричной системе. Для этого нужно преобразовать числа в двоичное представление, выполнить операцию и преоб- разовать результат обратно.

0x06

&                 &

0x03

0x02

Расписав числа таким образом, мы получили, что Охб & 0x3 равно 0x2. (Попробуйте подсчитать значение выражения 0x6 | 0x3. Если вам это удастся, вы

почувствуете себя на седьмом небе. Иначе очутитесь на первой из семи ступенек в преисподнюю. У меня на это ушло чуть меньше восьми минут.)

 

50                                                Часть I. Первое знакомство с C++


Простой пример

Следующая программа иллюстрирует работу побитовых операторов. В ней ини- циируются две переменные, к которым применяются  операции                                                                                             |, Результаты вычислений выводятся на экран.

// BitTest — инициируются две переменные и

//                      выводятся                        выполнения

//                      операторов             и

 

 

in t                                  char*

{

// установка вывода в                                           виде

 

// инициализация двух аргументов int  = 0x1234;

int nArg2 =

 

// Выполнение логических операций

// Сначала применяем унарный оператор NOT


<<

"Arg2


= Ох" <<

- Ох" <<

= Ох" <<


nArgl << '•\п" nArg2 << '

<<


«            = Ох"       « "\п

 

// Теперь - бинарные операторы


<< "nArgl &

<< (nArgl s

<<

« "nArgl |

« (nArgl |

<<

<< "nArgl

(nArgl


nArg2 = nArg2)

nArg2 nArg2)


Ох"

 

Ох"

 

Ох"


С);

 

Первая инструкция нашей программы (та, которая следует за ключевым словом main) —        :hex) — меняет используемый умолчанию десятичный формат вывода на шестнадцатеричный (поверьте мне, это сработает).

В остальном программа очевидна. Присвоив значения аргументам nArgl, nArg2, она выводит все варианты побитовых вычислений над этими переменными.

Результат выполнения программы будет выглядеть следующим образом:

= 0x1234

Arg2                        Oxff

 

~nArg2                                      OxffffffOO nArgl S nArg2 = 0x34

nArgl | nArg2 = 0xl2ff nArgl    nArg2 0xl2cb

 

К шестнадцатеричным числам всегда приписывается префикс Ох.

Глава 4. Выполнение логических операций                                             51


Зачем придуманы эти глупые операторы

Предназначение большинства операторов очевидно. В необходимости операторов

- или + сомневаться не приходится. Не нужно рассказывать, для чего используется

| |. Но для начинающих программистов может быть далеко не очевидно, за- чем использовать битовые операторы.

Оператор & часто используется для маскирования информации. Например, пред- положим, что нам нужно выделить последний значимый шестнадцатеричный разряд из четырехразрядного числа:

 

& 0001 & 0010 ООН 0100
OxOOOF 0000 0000 0000 1111
0x0004 0000 0000 0000 0100

С помощью этого оператора можно также выделять и устанавливать значения от- дельных битов.

Представьте себе, что в написанной вами базе данных для сохранения некоторой информации о личности используется единственный бит. Первый значимый бит ра- вен 1. если это особа мужского пола, второй бит равен 1, если это программист, тре- тий равен 1 в случае внешней привлекательности, а четвертый — если человек имеет собаку. Взгляните на табл. 4.4.

Таблица4.4.Значениябитов                                                                     

Бит                                                                                                  ЗНАЧЕНИЕ

1 мужчина
1 1 программист
2 1  
3 1 собаки

Не особо привлекательный, имеющий собаку программист мужского рода будет закодирован числом Если вы хотите просмотреть все записи в поисках хоро- шенькой девушки без собаки, причем неважно, разбирается ли она в C++, надо ис- пользовать следующее сравнение (числа приведены в двоичной записи!):

& 1011) == 0010


 

 

- важно


- не мужчина

- привлекательна

- без собаки


* - не интересует

В этом случае число 1011 является маской, потому что оно маскирует, исключая из рассмотрения, биты с не интересующими вас характеристиками.

 

52                                                      Часть I. Первое знакомство с C++


Глава5


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 214; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь