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


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

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

Синтаксис

result = pattern << amount  

Комплектующие

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

pattern
Обязательное. Целочисленное числовое выражение. Битовый шаблон, который необходимо переместить. Тип данных должен быть целочисленным типом (SByte, , ByteShort, 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 значение отрицательное, оно принимается как неподписаемое значение и маскируется с соответствующей маской размера.

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

Замечание

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

Пример

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

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

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

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

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

См. также