<< Оператор (Visual Basic)
Выполняет арифметическую левую смену по битовой схеме.
Синтаксис
result = pattern << amount
Детали
result
Обязательный. Целочисленное числовое значение. Результат смены битового шаблона. Тип данных совпадает с pattern
типом данных.
pattern
Обязательный. Целочисленное числовое выражение. Битовый шаблон, который необходимо переместить. Тип данных должен быть целочисленным типом (SByte
, , Short
Byte
, UShort
, Integer
, UInteger
Long
или 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.