Cдвиг вправо и сдвиг влево в C#

Приветствую всех, сегодня рассмотрим примеры сдвига в лево и право.

В начале рассмотрим сдвиг вправо:

Этот оператор является бинарным, переносит все биты на заданное количество позиций вправо, при этом освобождающие позиции справа усекаются, а слева заполняются нулями. Первый операнд — изменяемая целочисленная переменная, а второй — целочисленная переменная, задающая величину сдвига.
В двоичной системе счисления сдвиг бита на одну позицию вправо эквивалентен делению на 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
Обновлено: 26.12.2019 — 20:10

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.