Поделиться через


Оператор << (Visual Basic)

Обновлен: Ноябрь 2007

Выполняет арифметический сдвиг разряда в левую сторону.

result = pattern << amount

Компоненты

  • result
    Обязательный параметр. Целое числовое значение. Результат сдвига битового шаблона. Тип данных такой же, как в pattern.

  • pattern
    Обязательный. Целое числовое выражение. Битовый шаблон, для которого выполняется сдвиг. Тип данных должен быть целым типом (SByte, Byte, Short, UShort, Integer, UInteger, Long или ULong).

  • amount
    Обязательный. Числовое выражение. Число битов, на которое следует сдвинуть битовый шаблон. Тип данных должен быть Integer или расширен до Integer.

Заметки

Арифметические сдвиги не являются циклическими. Это означает, что биты, сдвинутые в один конец результата, не вводятся повторно в другой конец. В арифметическом левом сдвиге биты, сдвинутые за пределы диапазона типа данных результата, отбрасываются, а освободившиеся справа позиции битов задаются как нули.

Чтобы предотвратить сдвиг на количество битов, превышающее количество битов результата, Visual Basic маскирует значение элемента amount с помощью маски размера, соответствующей типу данных элемента pattern. Двоичное AND этих значений используется для задания величины сдвига. Используются следующие маски размера:

Тип данных pattern

Маска размера (десятичная)

Маска размера (шестнадцатеричная)

SByte, Byte

7

&H00000007

Short, UShort

15

&H0000000F

Integer, UInteger

31

&H0000001F

Long, ULong

63

&H0000003F

Если amount равно нулю, значение из result совпадает со значением pattern. Если amount имеет отрицательное значение, берется значение без знака и маскируется с помощью соответствующей маски размера.

В результате арифметического сдвига никогда не создаются исключения переполнения.

7haw1dex.alert_note(ru-ru,VS.90).gifПримечание.

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

Пример

В данном примере оператор << используется для выполнения арифметических левых сдвигов целых значений. Результат всегда имеет тот же тип данных, что и выражение, для которого выполнен сдвиг.

Dim pattern As Short = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1

Ниже приведены результаты предыдущего примера:

  • result1 равен 192 (0000 0000 1100 0000).

  • result2 равен 3072 (0000 1100 0000 0000).

  • result3 равен -32768 (1000 0000 0000 0000).

  • result4 равен 384 (0000 0001 1000 0000).

  • result5 равен 0 (сдвигаются 15 разрядов влево).

Для result4 сдвиг вычисляется как 17 AND 15, что равно 1.

См. также

Основные понятия

Арифметические операторы в Visual Basic

Ссылки

Операторы поразрядного сдвига

Операторы присваивания

Оператор <<= (Visual Basic)

Порядок применения операторов в Visual Basic

Список операторов, сгруппированных по функциональному назначению