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

С# - Ватсон К.

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

. ft Докрасного цвета, значение переменкой ayColor стало 110
containeRed “ (щу llor & 4) =*4;
¦ fi Выполняется npoaepta ка наличие бита, отвечающего за красный цвет

В результате выполнения последней строки кода значение переменной containsRed будет true, поскольку “красный” бит в переменной nyColor равен 1.

Этот способ может оказаться весьма полезным в том случае, если выполняемые операции используются для одновременной проверки нескольких бнтов (например, для 32 в случае значений тнпа int). Однако существуют более эффективные способы хранения дополнительной информации в отдельных переменных, для чего используются переменные сложных типов. Их обсуждению посвящена следующая глава. '

Помимо описанных выше четырех операторов для работы с битами следует рассмотреть еще два оператора. А именно:

Оператор Тип Пример выражения Результат

» Бинарный varl « var2 » var3; Переменной varl присваивается значение, которое

получается прн сдвиге двоичного содержимого переменной var2 вправо на число битов, равное значению переменной var3

« Бинарный varl = var2 « var3j Переменной varl присваивается значение, которое

получается прн сдвиге двоичного содержимого переменной var2 влево на число бнтов, равное значению переменной var3

Работу этих операторов, обычно называемых операторами побитового сдвига, лучше всего проиллюстрировать с помощью небольшого примера:

int verl, var2 ¦ 10, ver3 ¦ 21

varl - varl << varSj

В этом примере переменной varl будет присвоено значение 40. Действительно, двоичное представление числа 10 — "1010"; после сдвига на две позиции влево оно превратится в “101000” — двоичное представление числа 40. То, что мы сделали, можно изобразить как операцию умножения. Каждый бит прн сдвиге на одну позицию влево увеличивает свое значение в два раза, соответственно сдвиг на две позиции эквивалентен умножению иа 4. И наоборот, прн сдвиге всех битов вправо возникает эффект деления операнда на два, прн этом любой целый остаток теряется:

int varl, vor2 = 10;

varl ¦ var2' » lj . ¦

В данном случае varl будет содержать значение 5, а в результате выполнения следующего примера ее значение станет равным 2:

int varl, vara- 10;

Varl ¦ varl »'2: I
Управление порядком выполнения

53

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

Логические операторы присваивания

Последние операторы, которые нам осталось обсудить в этом разделе,— это комбинация рассмотренных выше операторов с оператором присваивания. Онн во многом сходны с математическими операторами присваивания, рассматривавшимися в предыдущей главе (+“, *- и т. д). Логические операторы приведены в следующей таблице:

Оператор Тип

Пример выражения

Результат

Бннариый varl s* var2>

Бинарный varl 1= var2r

Бинарный varl л= var2>

Переменной varl присваивается значение, являющееся результатом выполнения операции varl & var2

Переменной vari присваивается значение, являющееся результатом выполнения операции varl I var2

Переменной varl присваивается значение, являющееся результатом выполнения операции varl л var2

Эти операторы используются как с логическими, так и с численными значениями, точно так же, как и операторы &, | и ".

Обратите внимание, что при выполнении операторов <?" и | = применяются операторы & и |, а не && и |], что приводит к издержкам, характерным для этих более простых операторов.

Для операторов побитового сдвига также существуют соответствующие операторы присваивания:

Оператор Тип Пример выражения Результат .
»= Унарный varl »ж vnr2; Переменной varl присваивается значение, которое получается в результате сдвига двоичного содержимого переменной varl вправо на число бнтов, равное значению переменной var2 ,
«= Унарный varl «= var2 ; Переменной varl присваивается значение, которое получается в результате сдвига двоичного содержимого переменной varl влево на число битов, равное значению переменной var2
54

Глава 4

Прантикум: использование логических операторов и операторов работы с битами

1. Создайте новое консольное приложение с именем ch04Ex0i В директории C:\BeoCSharp\Chapter4.

2. Добавьте следующий код в ciaasi.ee: static void Main(string(] args)

( ....................... ' _

Console.WriteLine('Sneer an Integer:')-;

int jylnt ¦ Convert. ToInt3 2 (Console. ReadLine ()) ;

Can Bale. WriteLine ("Integer leas than 10? {0}', myint < 10) j Con e.HriteLine ('Intent between 0 and.5? (0)',

(0 swlnt) && (aylnt <= 5)) i - Console.Hrltel/ine('Bltwiee UND of Integer and 10 » (0)', myint и 10) >

)

3. Запустите приложение; в ответ на приглашение введите целое число:

: С:\Пн.'пГ^Мог р ¦ Chopter4\ChCi >ЕиВ I'ybiiADtbug:ChtMEHRl си;
Предыдущая << 1 .. 25 26 27 28 29 30 < 31 > 32 33 34 35 36 37 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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