русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Результаты битовых операций


Дата добавления: 2014-02-04; просмотров: 836; Нарушение авторских прав


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

Дополнительные операции присваивания

Очень часто в программах присутствуют операторы вида

 

a = a + b;

a = a - b;

a = a * b;

a = a / b;

 

Они изменяют значения некоторых переменных. В языке Cи для сокращения программ и повышения их эффективности используются дополнительные операторы присваивания:

 

a += b;

a -= b;

a *= b;

a /= b;

a %= b;

 

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

Дополнительные операции присваивания имеют самый низкий приоритет и выполняются справа налево.

Использование операций ++, --, +=, , , /=, %= вместо обычных не является обязательным, но их применение считается хорошим стилем программирования на языке Cи.

Любые данные, записанные в память ЭВМ, как известно, представляют собой последовательность бит, т.е. последовательность нулей и единиц. Например, любое число типа int будет занимать 2 байта в памяти, т.е 16 бит. Его можно рассматривать двояко: либо как целое число ( так и делается при выполнении операций *,/, +, - , % ), либо как последовательность бит, что возможно при использовании битовых операций.

Битовые операции выполняются независимо над каждым битом данных. Если операция двуместная, то она выполняется над соответствующими битами операндов.

В Си имеются следующие битовые операции:

 

~ битовое отрицание (одноместная),

& побитовое "и" (двуместная),

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

| побитовое "или" (двуместная).

 

Результат этих операций определяет таблица значений для всевозможных комбинаций бит двух операндов.



op1 op2 ~op1 op1 & op2 op1 ^ op2 op1 | op2

 

Рассмотрим несколько примеров.

Первый пример показывает, как с помощью операции | можно установить в единицу выбранные биты операнда:

 

/* a = 00001001 = 9 */

char a, b; /* 00011010 = 26 */

a = 9; /* -------- */

b = a | 26 /* b = 31 */ /* b = 00011011 = 31 */

 

Следующий пример показывает, как с помощью операции & можно обнулить старшую часть байта:

 

char a, b; /* a = 00101101 = 45 */

a = 45; /* 00001111 */

b = a & 0x0F; /* -------- */

/* b = 00001101 = 13 */

 

К битовым операциям относятся операции сдвига << и >> :

 

a << b сдвиг битов переменной a влево на b позиций,

a >> b сдвиг битов переменной a вправо на b позиций.

 

Например:

 

char a, b;

a = 26; /* a = 00011010 = 26 */

b = a << 2; /* b = 01101000 = 104 */

 

Сдвиг влево равносилен умножению на 2 в соответствующей степени. Сдвиг вправо - делению на 2 в соответствующей степени.

Все битовые операции выполняются слева направо. В следующей строке приведены битовые операции в порядке уменьшения их приоритета.

 

~, << >>, &, ^, |

 

Для двуместных битовых операций определены дополнительные операции присваивания:

 

a <<= b; эквивалентно a = a << b,

a >>= b; эквивалентно a = a >> b,

a &= b; эквивалентно a = a & b,

a ^= b; эквивалентно a = a ^ b,

a |= b; эквивалентно a = a | b.



<== предыдущая лекция | следующая лекция ==>
Дополнительные арифметические операции | Результаты логических операций


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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