Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 30

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 24 25 26 27 28 29 < 30 > 31 32 33 34 35 36 .. 404 >> Следующая


Если значение первого операнда оператора && — false, то нет необходимости рассматривать значение второго операнда, поскольку результатом все равно будет значение false. Аналогично оператор || вернет значение true, если его первый операнд имеет значение true, независимо от значения второго операнда. При выполнении операторов & н | всегда происходит вычисление обоих операндов.

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

Операторы работы с битами

По прочтении предыдущего раздела может возникнуть вопрос, для чего вообще существуют операторы & и |. Ответ заключается в том, что эти операторы могут использоваться для выполнения операций над численными значениями. Фактически онн имеют дело с хранящейся в переменной последовательностью битов, а не со значением переменной как таковым.

Давайте шаг за шагом рассмотрим работу этих операторов, начав с оператора &. Ои действует следующим образом: каждый бит первого операнда сравнивается с находящимся в такой же позиции битом второго операнда, а бит, записывающийся в аналогичной позиции результата, определяется следующим образом (см. табл. слева).

Бит операнда 1 Бит операнда 2 Бит результата выполнения операции &
1 1 1
1 0 . 0
0 1 0
0 0 0

Аналогичные действия выполняются и в случае применения оператора |, только результат вычисляется несколько иначе (см. табл. справа).

В качестве примера рассмотрим операцию, выполняемую следующим кодом:

int result, opl. opl|

. opl “ t; opl ¦ Sj . .

~ result = opl fc op2;

Бит операнда 1 Бит операнда 2 Бит результата выполнения операции |
1 1 1
1 0 1
0 1 1
0 0 0

Здесь необходимо принять во внимание двоичное представление операндов opl н ор2, соответственно 100 и 101. Результат этой операции получается путем сравнения двоичных битов, находящихся в одинаковых позициях в каждом из этих логических представлений:
Управление порядком выполнения

51

&

1 О О

? Первому слева биту результата присваивается значение 1, если оба крайних левых бита opl и ор2 равны 1,

и значение 0 в противном случае.

? Следующему биту результата присваивается значение 1, если оба следующих бита opi и ор2 равны 1,

и значение 0 в противном случае.

? Так продолжается для всех остальных битов.

В данном примере крайние биты слева у обоих операндов opi и ор2 равны 1, поэтому крайний левый бит результата также будет равен 1. В следующей позиции оба бита равны 0, а в третьей позиции биты равны соответственно 1 н 0; таким образом, второй и третий биты результата будут равны 0. В качестве окончательного результата в двоичном представлении будет получено число 100, т. е. результат выполнения этой операции будет равен 4.

Все вышесказанное можно проиллюстрировать следующим образом (см. рис. слева).

Аналогичный процесс происходит при нс-

4 пользовании оператора |, с тем лишь отличием, что получающийся в результате бит равняется 1 в том случае, если хотя бы один из соответствующих битов операндов равен 1 (см. рис. справа).

4

5

0

0

1 0 1

Бит операнда 1 Бит операнда 2 Бит результата выполнения операции *
1 1 0
1 0 1
0 [ 1
0 0 0

Точно таким же способом можно использовать н оператор *. В этом случае в результате появляется 1, если только у одного из операндов, ио не у обоих одновременно, в соответствующей позиции находится единица (см. табл. слева).

В языке C# допускается использование унарного оператора работы с битами ", воздействие которого иа операнд состоит в инвертировании (измеиеиин)

всех его битов таким образом, что все биты, которые были равны 0, получают значение 1, и наоборот (см. табл. справа).

Такие побитовые операции оказываются весьма полезными в самых разных ситуациях, поскольку онн предлагают простой метод использования

Бит результата
Бит выполнения
операнда операции *
1 0
0 1

Биты Десятичное представление Значение
000 0 Черный
100 4 Красный
010 2 Зеленый
001 I Синий
101 5 Пурпурный
110 6 Желтый
011 3 Голубой
111 7 Белый

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

Предположим, что мы храним эти значения в переменной тнпа int. Начиная с черного цвета нлн, что то же самое, со значения переменной тнпа int, равного 0, можно выполнить различные операции. Например:
52

Глава 4

, ¦ . int nyColoc- » i", .
bool coatainsRed;
svColor.^ mjrCalor ;| 2j , - .
7/ Добавлен-, бит зеленого цвета'; значение переменно* qyColor стало 010
*уСй1ог»«уСо1ио 1 4» '
Предыдущая << 1 .. 24 25 26 27 28 29 < 30 > 31 32 33 34 35 36 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.