Студопедия


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Поразрядные операторы(стр. 107)




Они определены только для целочисленных операндов

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

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

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

>> Сдвиг вправо

<< Сдвиг влево

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

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

В приведенном ниже примере программы демонстрируется применение поразрядного оператора & для преобразования нечетных чисел в четные. Для этой цели достаточно сбросить младший разряд числа. Например, число 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 & 0xFFFE);

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

+ num + "\n");

}

}

}

Шестнадцатеричное значение 0xFFFE, используемое в поразрядном операторе И, имеет следующую двоичную форму: 1111 1111 1111 1110.

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

using System;

class IsOdd

{

static void Main()

{

ushort num;

num = 10;

if ((num & 1) == 1)

Console.WriteLine("He выводится.");

num = 11;

if ((num & 1) == 1)

Console.WriteLine(num + " — нечетное число.");

}

}

// Показать биты, составляющие байт.

using System;

class ShowBits

{

static void Main()

{

byte val = 123;

for (int t = 128; t > 0; t = t / 2)

{

if ((val & t) != 0) Console.Write("1 ");

if ((val & t) == 0) Console.Write("0 ");

}

}

}

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

using System;

class MakeOdd

{

static void Main()

{

ushort num, i;

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

{

num = i;

Console.WriteLine("num: " + num);

num = (ushort)(num | 1);

Console.WriteLine("num после установки младшего разряда: " + num + "\n");

}

}

}

Поразрядный оператор исключающее ИЛИ устанавливает двоичный разряд операнда в том и только в том случае, если двоичные разряды сравниваемых операндов оказываются разными, как в приведенном ниже примере.

У поразрядного оператора исключающее ИЛИ имеется одно интересное свойство, которое оказывается полезным в самых разных ситуациях. Так, если выполнить сначала поразрядную операцию исключающее ИЛИ одного значения Xс другим значением Y, а затем такую же операцию над результатом предыдущей операции и значением Y, то вновь получится первоначальное значение X. Это означает, что в приведенном ниже фрагменте кода




R1 = X ^ Y;

R2 = R1 ^ Y;

значение переменной R2 оказывается в итоге таким же, как и значение переменной X.

// Продемонстрировать применение поразрядного оператора исключающее ИЛИ.

using System;

class Encode

{

static void Main()

{

char ch1 = 'H', ch2 = 'i', ch3 = '!';

int key = 88;

Console.WriteLine("Исходное сообщение: " + ch1 + ch2 + ch3);

// Зашифровать сообщение.

ch1 = (char)(ch1 ^ key);

ch2 = (char)(ch2 ^ key);

ch3 = (char)(ch3 ^ key);

Console.WriteLine("Зашифрованное сообщение: " + ch1 + ch2 + ch3);

// Расшифровать сообщение.

ch1 = (char)(ch1 ^ key);

ch2 = (char)(ch2 ^ key);

ch3 = (char)(ch3 ^ key);

Console.WriteLine("Расшифрованное сообщение: " + ch1 + ch2 + ch3);

}

}

// Продемонстрировать применение поразрядного унарного оператора НЕ.

using System;

class NotDemo

{

static void Main()

{

sbyte b = -34;

for (int t = 128; t > 0; t = t / 2)

{

if ((b & t) != 0) Console.Write("1 ");

if ((b & t) == 0) Console.Write("0 ");

}

Console.WriteLine();

// обратить все биты

b = (sbyte)~b;

for (int t = 128; t > 0; t = t / 2)

{

if ((b & t) != 0) Console.Write("1 ");

if ((b & t) == 0) Console.Write("0 ");

}

}

}





Дата добавления: 2015-04-12; просмотров: 193; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась - это был конец пары: "Что-то тут концом пахнет". 7566 - | 7214 - или читать все...

Читайте также:

 

54.243.17.113 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


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