Operador << (Visual Basic)
Executa um deslocamento aritmético à esquerda em um padrão de bits.
result = pattern << amount
Partes
result
Obrigatório. Valor numérico integral. O resultado do deslocamento do padrão de bits. O tipo de dados é o mesmo de pattern.pattern
Obrigatório. Expressão numérica integral. O padrão de bits para ser deslocado. O tipo de dados deve ser um tipo integral (SByte, Byte, Short, UShort, Integer, UInteger, Long, ou ULong).amount
Obrigatório. Expressão numérica. O número de bits para deslocar o padrão de bits. O tipo de dados deve ser Integer ou ampliável para Integer.
Comentários
Shifts aritméticos são não circulares, 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 fora do intervalo de tipo de dados o resultado são descartados, e as posições vagas de bits no lado direito estão definidas como zero.
Para evitar que uma mudança de bits mais do que o resultado pode comportar, o Visual Basic mascara o valor de amount com uma máscara de tamanho que corresponde ao tipo de dados do pattern. O binário AND desses valores é usado para a quantidade de deslocamentos. As máscaras de tamanho são:
Tipo de dados do 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 é idêntico ao valor de pattern. Se amount for negativo, ele é interpretado como um valor não assinado e mascarado com a máscara de tamanho apropriada.
Deslocamentos aritméticos nunca geram exceções de overflow (estouro).
Dica
O operador << pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo daquela classe ou estrutura.Se o seu código utiliza este operador em uma classe ou estrutura, certifique-se de que você compreenda seu comportamento redefinido.Para obter mais informações, consulte Procedimentos do operador (Visual Basic).
Exemplo
O exemplo a seguir usa a << operador para executar cálculos aritméticos deixado turnos nos valores integrais. O resultado sempre tem o mesmo tipo de dados que a 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 (deslocadas 15 casas à esquerda).
O valor de deslocamento para result4 é calculado como 17 AND 15, que é igual a 1.
Consulte também
Referência
Operadores Bit Shift (Visual Basic)
Operadores de atribuição (Visual Basic)
Precedência do operador no Visual Basic
Operadores listados por funcionalidade (Visual Basic)