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


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

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

Синтаксис

result = pattern << amount  

Детали

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

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

amount
Обязательный. Числовое выражение. Количество битов для смены битового шаблона. Тип данных должен быть или Integer расширен до Integer.

Замечания

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

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

Тип данных pattern Маска размера (десятичная) Маска размера (шестнадцатеричная)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

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

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

Примечание.

Оператор << может быть перегружен, что означает, что класс или структура могут переопределить его поведение, если операнда имеет тип этого класса или структуры. Если код использует этот оператор в таком классе или структуре, убедитесь, что вы понимаете его переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.

Пример

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

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 (000 000 1100 0000).

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

  • result3 имеет значение -32768 (1000 0000 0000 0000).

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

  • result5 значение 0 (смещено 15 мест влево).

Сумма result4 смены вычисляется как 17 И 15, что равно 1.

См. также