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