КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |