На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 10. Операторы побитового сдвига C#


Все уроки по C# расположены здесь

На этом уроке мы продолжим обзор побитовых операторов C#, вводя функции сдвига. Эти операторы расширяют возможности C# для обработки двоичной информации.

Введение

На предыдущем уроке я ввел логические побитовые операторы, описывая, как эти операторы могут быть использованы для извлечения и изменения отдельных битов в целое число. Побитовое множество операторов завершается после понимания операторов сдвига.

Оператор Shift Left (сдвиг влево)

Операторы сдвига позволяют программистам корректировать целое число, перемещая все его биты влево или вправо. Следующая диаграмма показывает влияние смещения значения влево на одну цифру.



Как вы можете видеть, каждый бит перемещается влево,а младший бит становится нулевым. Так как это бинарная операция, эффект сдвига влево состоит в том, чтобы удвоить значение. На самом деле, этот метод часто используется для выполнения некоторых умножения, как это может быть быстрее, чем при использовании арифметического умножения.

В C# оператор shift left представлен в виде на два меньше (<<). Оператор может быть использован для сдвига двоичного числа на одну или несколько цифр. Количество цифр указывается после оператора, как в следующем коде

uint value = 15;              // 00001111
 
uint doubled = value << 1;    // результат = 00011110 = 30
uint shiftFour = value << 4;  // результат = 11110000 = 240
Сдвиг вправо

Оператор shift right обеспечивает обратный сдвиг влево, перемещая каждый бит вправо на количество цифр. C# использует два знака больше, чем (>>) для оператора.

uint value = 240;             // 11110000
 
uint halved = value >> 1;     // результат = 01111000 = 120
uint shiftFour = value >> 4;  // результат = 00001111 = 15
Биты переполнения

При использовании функции сдвига, один бит, который называется переполнением разрядной, будет смещен за пределы двоичного значения. Значение этой цифры теряется во время операции и не может быть восстановлено. Если значение бита важно, то оно должно быть проверено перед сдвигом с помощью логического побитового оператора. Данные переполнения потери важны, если операции сдвига используются для умножения или деления, чтобы обеспечить правильный результат

uint value = 15;              // 00001111
 
uint halved = value >> 1;     // результат = 00000111 = 7
Целые числа

Как указывалось в предыдущей статье, целые числа со знаком используют бит высшего порядка, чтобы определить, является ли значение положительным или отрицательным, и что остальные биты используют дополнительную запись two для отрицательных значений. Для этого C# игнорирует бит для подписанных типов данных и соответственно смещает отрицательные значения. Таким образом, сдвиг работает на положительные и отрицательные значения.

int value = -240;
 
int halved = value >> 1;      // результат = -120
Составные операторы присваивания

Операторы сдвига имеют эквиваленты для составного назначения, подобные другим операторам, описанным в этом учебном курсе. Они используются путем добавления знака равенства к оператору и использования числа битов для сдвига в качестве операнда. В следующем примере показано их использование

int value = 240;
value >>= 2;      // результат = 60
value <<= 1;      // результат = 120
Предыдущий: Урок 9. Логические побитовые операторы C# | Следующий: Урок 11. Операторы сравнения в C#




тегистатьи IT, Уроки по си шарп, си шарп, операторы





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Наши услуги
Как банки внедряют и используют технологии искусственного интеллекта


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.