VirQ. Операции побитового смещения "<<" и ">>" в C#
Язык C# входит в ТОП-5
самых популярных языков
программирования
Главная / Целочисленные переменные /
Операции побитового смещения "<<" и ">>"
Статей на сайте: 61

Операции побитового смещения "<<" и ">>"


Операции побитового смещения не совсем легки в понимании с первого раза, но когда-нибудь могут приходиться.
Смещение на 1 бит вправо ">>" равносильно делению на 2.
Например, будем использовать число 301 десятичной системы. В двоичной системе это число записывается так 100101101
При попытке сместить все биты вправо, один правый бит будет удалён.
Итого:
[code] a = 100101101 //было так a = 10010110 //станет так [/code]
В коде это будет выглядеть так:
[code] int a = 301; int b = a >> 1; //Получим 150 [/code]
150, потому что 10010110 - это и есть 150. Для проверки можно воспользоваться калькулятором (подробнее).
При попытке сместить на 2 бита вправо, это равносильно делению на 4
[code] int a = 301; int b = a >> 2; //Получим 75 (число 1001011) [/code]
Продолжим:
[code] int a = 301; int c = a >> 3; //Получим 37 (число 100101), равносильно делению на 8 int d = a >> 4; //Получим 18 (число 10010), равносильно делению на 16 int e = a >> 5; //Получим 9 (число 1001), равносильно делению на 32 [/code]
и так далее

Побитовое смещение влево "<<" равносильно умножению.
Если, например, использовать число 91, которое в двоичной системе равно 1011011, то при побитовом смещении влево все биты смещаются, добавляя 0 в конце.
[code] a = 1011011 //было так a = 10110110 //станет так [/code]
Итого, в коде выглядеть будет так:
[code] int a = 301; int b = a << 1; //Получим 602 [/code]
<< 2 - это умножить на 4
<< 3 - умножить на 8
<< 4 - умножить на 16

Так для упрощения записи можно использовать >>= и <<=
Скажем, было число 10. Надо число увеличить в 16 раз
[code] int a = 10; a <<= 4; //Теперь a = 160 //или же так int a = 10; a *= 16; //Теперь a = 160 [/code]

Дополнительная информация о том, как вывести результат в консоли или WinForm