Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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; Нарушение авторских прав |