Вход/Регистрация
C# 4.0 полное руководство - 2011
вернуться

Шилдт Герберт

Шрифт:

Эти операторы называются поразрядными, поскольку они служат для проверки, установки или сдвига двоичных разрядов, составляющих целое значение. Среди прочего поразрядные операторы применяются для решения самых разных задач программирования на уровне системы, включая, например, анализ информации состояния устройства. Все доступные в C# поразрядные операторы приведены в табл. 4.1.

Таблица 4.1. Поразрядные операторы

Оператор

Значение

&

Поразрядное И

1

Поразрядное ИДИ

Поразрядное исключающее ИДИ

>>

Сдвиг вправо

<<

Сдвйг влево

Дополнение до 1 (унарный оператор НЕ)

Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ

Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ обозначаются следую

щим образом: &, |, л и

~. Они выполняют те же функции, что и их логические аналоги,

рассмотренные выше.

Но в отличие от логических операторов, поразрядные операто-

ры действуют на уровне отдельных двоичных разрядов. Ниже приведены результаты

поразрядных операций с двоичными единицами и нулями.

р q

р & q plq pAq ~р

0 0

0 0 0 1

1 0

0 110

0 1

0 1 11*

1 1

1 .1 0 0

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

1101 ООН 1010 1010

& _

1000 0010

В приведенном ниже примере программы демонстрируется применение поразрядного оператора & для преобразования нечетных чисел в четные. Для этой цели достаточно сбросить младший разряд числа. Например, число 9 имеет следующий двоичный вид: 0000 1001. Если сбросить младший разряд этого числа, то оно станет числом 8, а в двоичной форме — 0000 1000.

// Применить поразрядный оператор И, чтобы сделать число четным.

using System;

class MakeEven {

static void Main { ushort num; ushort i;”

for(i =1; i <= 10; i++) {

num = i;

Console.WriteLine("num: " + num); num = (ushort) (num & OxFFFE);

Console.WriteLine("num после сброса младшего разряда: "

+ num + "\n");

}

}

}

Результат выполнения этой программы приведен ниже.

num: 1

num после сброса младшего разряда: О num: 2

num после сброса младшего разряда: 2 num: 3

num после сброса младшего разряда: 2 num: 4

num после сброса младшего разряда: 4 num: 5

num после сброса младшего разряда: 4 num: 6

num после сброса младшего разряда: 6 num: 7

num после сброса младшего разряда: 6 num: 8

num после сброса младшего разряда: 8 num: 9

num после сброса младшего разряда: 8 num: 10

num после сброса младшего разряда: 10

Шестнадцатеричное значение OxFFFE, используемое в поразрядном операторе И, имеет следующую двоичную форму: 1111 1111 1111 1110. Таким образом, поразрядная операция И оставляет без изменения все двоичные разряды в числовом значении переменной num, кроме младшего разряда, который сбрасывается в нуль. В итоге четные числа не претерпевают никаких изменений, а нечетные уменьшаются на 1 и становятся четными.

  • Читать дальше
  • 1
  • ...
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: