Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 728; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.) |