Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Гических операций





+= -= *= /=

%= &= |= ^=

 

Поразрядные операторы(стр. 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 ");

}

}

}







Date: 2015-09-02; view: 386; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию