Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Побитовый сдвиг влево




Побитовое отрицание

Битовые операции

Вступление

Битовые операции

Как вам известно, у компьютера минимальной единицей измерения информации является бит, который представляет собой один двоичный разряд (то есть может принимать два значения 0 и 1). Но минимальной адресуемой единицей памяти компьютера является байт. Так зачем же нужны битовые операции?

Во-первых, разработчики Windows всегда старались сделать так, чтобы старшие поколения Windows поддерживали, по возможности, младшие версии. То есть приложения, работающие в 16-разрядной Windows, должны поддерживаться 32-разрядной Windows. А так как раньше экономия оперативной памяти было очень важным делом, то многие функции Windows возвращают значения, с которыми приходиться работать на уровне битов. Ярким примером может служить функция Windows - GetLogicalDrives(), которая возвращает имена найденных в системе логических дисков. Если в возращаемом значении соответствующий бит установлен в 1, то данный логический диск обнаружен (0-й бит - диск A, 1-й бит - диск B и т. д.); для вызова функии необходимо подключить библиотеку windows.h.

Во-вторых, к битовым операциям необходимо прибегать при работе с некоторыми системными функциями (особенно функциями для работы с оборудованием).

В-третьих, битовые операции часто приходиться использовать при работе с графикой (имеется в виду программирование с графикой). Как вы знаете, для работы с графикой на компьютере в большинстве случаев используется цветовая модель RGB. Битовые операции будут незаменимы, если вам, например, необходимо выделить какой-то один канал, или узнать процентное содержание красного, зеленого или синего цветов в исходном. Кстати, цвета удобно представлять в 16-чном виде - в этом случае количественная мера для каждого из цветовых каналов очевидна, в случае 10-чного числа этого сказать практически никогда нельзя.

Битовых операций всего 6 (приводятся с учетом приоритета):

~ - побитовое отрицание

<< - побитовый сдвиг влево

>> - побитовый сдвиг вправо

& - побитовое умножение

^ - побитовое исключающее сложение (сложение по модулю)

| - побитовое сложение

~ - побитовое отрицание работает следующим образом: каждый бит числа изменяет свое состояние на противоположное, то есть ноль становится единицей, а единица нулем.

Пример:

Если применить эту операцию к двоичному числу 01010110 (примеры на двоичных числах более наглядны), то ~010101102 = 101010012

В графике эта операция называется инверсией.

<< - при побитовом сдвиге влево каждый бит числа сдвигается на заданное количество разрядов (N разрядов) влево. При этом в результирующем числе N старших разрядов теряется, а в N младших разрядах появляются нули. Если правый операнд содержит отрицательное значение или его значение >= количеству бит в левом операнде, то результат операции не определен. Результат имеет тип левого операнда. Данная операция чаще всего применяется для помещения битов в заданную позицию.

Примечание: Для побитового сдвига влево a << N = a * 2N, причем такой способ умножения работает во много раз быстрее операции арифметического умножения *.

Пример:

100111012 << 3 = 111010002




Поделиться с друзьями:


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


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



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




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