Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Поразрядные операторы и, или, исключающее или и неСодержание книги
Поиск на нашем сайте
Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ обозначаются следующим образом: &, |, ^ и ~. Они выполняют те же функции, что и их логические аналоги. Но в отличие от логических операторов, поразрядные операторы действуют на уровне отдельных двоичных разрядов. С точки зрения наиболее распространенного применения поразрядную операцию И можно рассматривать как способ подавления отдельных двоичных разрядов. Это означает, что если какой-нибудь бит в любом из операндов равен 0, то соответствующий бит результата будет сброшен в 0. Поразрядный оператор ИЛИ может быть использован для установки отдельных двоичных разрядов. Если в 1 установлен какой-нибудь бит в любом из операндов этого оператора, то в 1 будет установлен и соответствующий бит в другом операнде. Поразрядный оператор исключающее ИЛИ устанавливает двоичный разряд операнда в том и только в том случае, если двоичные разряды сравниваемых операндов оказываются разными, как в приведенном ниже примере. Для понимания вышесказанного, разберём следующий пример выполнения поразрядных операций:
Рис. 2. 1. Примеры выполнение различных поразрядных операций к двоичным последовательностям
Рассмотрим пример программы, использующей поразрядные операторы:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main(string[] args) { chet(16); provChet(8); nechet(16); Console.WriteLine("\nДля продолжения нажмите любую клавишу... "); Console.ReadLine(); } // Метод, преобразующий все нечетные числа в четные // в диапазоне [0, x] c помощью // поразрядного оператора & static void chet(int x) { int result; Console.WriteLine("Преобразованный диапазон чисел от 0 до {0}:\n",x);
for (int i = 0; i <= x; i++) { // Сбрасываем младший разряд числа, чтобы // получить четное число result = i & 0xFFFE; Console.Write("{0}\t",result); } } // Метод, проверяющий является ли число четным static void provChet(int x) { Console.WriteLine("\n\nПроверка чётности чисел в диапазоне от 1 до {0}:\n",x); for (int i = 1; i <= x; i++) { if ((i & 1) == 0) Console.WriteLine("Число {0} - является чётным",i); else Console.WriteLine("Число {0} - является нечётным",i); } } // Метод, преобразующий четные числа в нечетные // с помощью поразрядного оператора | static void nechet(int x) { int result; Console.WriteLine("\nПреобразованный диапазон чисел от 0 до {0}:\n",x);
for (int i = 0; i <= x; i++) { result = i | 1; Console.Write("{0}\t",result); } } } }
Рис. 2. 1. Результат работы кода выше
Операторы сдвига
В С# имеется возможность сдвигать двоичные разряды, составляющие целое значение, влево или вправо на заданную величину. Ниже приведена общая форма для этих операторов:
<значение> << <число битов> <значение> >> <число битов>
Где число битов — это число двоичных разрядов, на которое сдвигается указанное значение.
При сдвиге влево, все двоичные разряды в указываемом значении сдвигаются на одну позицию влево, а младший разряд сбрасывается в нуль. При сдвиге вправо все двоичные разряды в указываемом значении сдвигаются на одну позицию вправо. Если вправо сдвигается целое значение без-знака, то старший разряд сбрасывается в нуль. А если вправо сдвигается целое значение со знаком, то разряд знака сохраняется. Напомним, что для представления отрицательных чисел старший разряд целого числа устанавливается в 1. Так, если сдвигаемое значение является отрицательным, то при каждом сдвиге вправо старший разряд числа устанавливается в 1. А если сдвигаемое значение является положительным, то при каждом сдвиге вправо старший разряд числа сбрасывается в нуль. При сдвиге влево и вправо крайние двоичные разряды теряются. Восстановить потерянные при сдвиге двоичные разряды нельзя, поскольку сдвиг в данном случае не является циклическим. Рассмотрим пример:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main(string[] args) { byte n = 6, result; // Умножить на 2 result = (byte)(n << 1); Console.WriteLine("{0} * 2 = {1}", n, result); // Умножить на 4 result = (byte)(n << 2); Console.WriteLine("{0} * 4 = {1}", n, result); // Разделить на 2 result = (byte)(n >> 1); Console.WriteLine("{0} / 2 = {1}", n, result); Console.WriteLine("Для продолжения нажмите любую клавишу... "); Console.ReadKey(); } } } /* Выведет: * 6 * 2 = 12 * 6 * 4 = 24 * 6 / 2 = 3 * Для продолжение нажмите любую клавишу... */ Применение операторов: тернарный оператор
|
||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 558; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.148.76 (0.005 с.) |