Operador << (Visual Basic)
Executa um deslocamento aritmético à esquerda em um padrão de bit.
Sintaxe
result = pattern << amount
Partes
result
Obrigatórios. Valor numérico integral. O resultado do deslocamento do padrão de bit. O tipo de dados é o mesmo que o de pattern
.
pattern
Obrigatórios. Expressão numérica integral. O padrão de bit a ser deslocado. O tipo de dados deve ser um tipo integral (SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
ou ULong
).
amount
Obrigatórios. Expressão numérica. O número de bits para deslocar o padrão de bit. O tipo de dados deve ser Integer
ou ampliado para Integer
.
Comentários
Os deslocamentos aritméticos não são circulares, o que significa que os bits deslocados de uma extremidade do resultado não são reintroduzidos na outra extremidade. Em um deslocamento aritmético à esquerda, os bits deslocados para além do intervalo do tipo de dados de resultado são descartados e as posições de bit desocupadas à direita são definidas como zero.
Para evitar o deslocamento de mais bits do que o resultado pode conter, o Visual Basic mascara o valor de amount
com uma máscara de tamanho que corresponda ao tipo de dados de pattern
. O AND binário desses valores é usado para a quantidade de deslocamento. As máscaras de tamanho são as seguintes:
Tipo de dados de pattern |
Máscara de tamanho (decimal) | Máscara de tamanho (hexadecimal) |
---|---|---|
SByte , Byte |
7 | &H00000007 |
Short , UShort |
15 | &H0000000F |
Integer , UInteger |
31 | &H0000001F |
Long , ULong |
63 | &H0000003F |
Se amount
for zero, o valor de result
será idêntico ao de pattern
. Se amount
for negativo, ele será tomado como um valor sem sinal e mascarado com a máscara de tamanho apropriada.
As mudanças aritméticas nunca geram exceções de estouro.
Observação
O operador <<
pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se o código usar esse operador em uma classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, confira Procedimentos de operador.
Exemplo
O exemplo a seguir usa o operador <<
para executar turnos aritméticos à esquerda em valores integrais. O resultado sempre tem o mesmo tipo de dados que o da expressão que está sendo deslocada.
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
Os resultados do exemplo anterior são os seguintes:
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 (deslocado 15 casas à esquerda).
O valor de deslocamento para result4
é calculado como 17 E 15, que é igual a 1.