Приветствую всех, сегодня рассмотрим примеры сдвига в лево и право.
В начале рассмотрим сдвиг вправо:
Этот оператор является бинарным, переносит все биты на заданное количество позиций вправо, при этом освобождающие позиции справа усекаются, а слева заполняются нулями. Первый операнд — изменяемая целочисленная переменная, а второй — целочисленная переменная, задающая величину сдвига.
В двоичной системе счисления сдвиг бита на одну позицию вправо эквивалентен делению на 2.
Чуть подробней: 4 >> 1
00000000000000000000000000000100
00000000000000000000000000000100
00000000000000000000000000000010
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; class Program { public static int Main() { int val = 4; val = val >> 1; Console.WriteLine(val); Console.ReadKey(); return 0; } } |
1 |
2 |
Сдвиг влево:
Этот оператор является бинарным, переносит все биты на заданное количество позиций влево, при этом освобождающие позиции справа заполняются нулями, а слева исчезают. Первый операнд — изменяемая целочисленная переменная, а второй — целочисленная переменная, задающая величину сдвига.
В двоичной системе счисления сдвиг бита на одну позицию влево эквивалентен умножению на 2.
Чуть подробней: 4 << 1
00000000000000000000000000000100
00000000000000000000000000000100
00000000000000000000000000001000
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; class Program { public static int Main() { int val = 4; val = val << 1; Console.WriteLine(val); Console.ReadKey(); return 0; } } |
1 |
8 |