>> Operador (Visual Basic)

Executa um deslocamento aritmético para a direita em um padrão de bits.

Sintaxe

result = pattern >> amount  

Partes

result
Obrigatório. Valor numérico integral. O resultado da mudança do padrão de bits. O tipo de dados é o mesmo que o de pattern.

pattern
Obrigatório. Expressão numérica integral. O padrão de bits a ser deslocado. O tipo de dados deve ser um tipo integral (, , , UShortShort, Integer, LongUInteger, , ou ULong). ByteSByte

amount
Obrigatório. Expressão numérica. O número de bits para alterar o padrão de bits. O tipo de dados deve ser Integer ou ampliado para Integer.

Observações

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 para a direita, os bits deslocados além da posição de bit mais à direita são descartados, e o bit mais à esquerda (sinal) é propagado para as posições de bit desocupadas à esquerda. Isso significa que, se pattern tiver um valor negativo, as posições desocupadas são definidas como uma, caso contrário, são definidas como zero.

Observe que os tipos Bytede dados , UShort, UInteger, e ULong não estão assinados, portanto, não há nenhum bit de sinal para propagar. Se pattern for de qualquer tipo não assinado, as posições desocupadas são sempre definidas como zero.

Para evitar o deslocamento por mais bits do que o resultado pode conter, o Visual Basic mascara o valor de com uma máscara de amount tamanho correspondente ao tipo de dados de pattern. O binário E desses valores é usado para o valor do turno. 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 é idêntico ao valor de pattern. Se amount for negativo, é tomado como um valor não assinado e mascarado com a máscara de tamanho apropriado.

Mudanças aritméticas nunca geram exceções de estouro.

Sobrecarga

O >> operador pode estar 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 seu código usa esse operador em tal classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos do operador.

Exemplo

O exemplo a seguir usa o >> operador para executar deslocamentos aritméticos à direita em valores integrais. O resultado sempre tem o mesmo tipo de dados da expressão que está sendo deslocada.

Dim pattern As Short = 2560
' The bit pattern is 0000 1010 0000 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern >> 0
result2 = pattern >> 4
result3 = pattern >> 10
result4 = pattern >> 18
result5 = pattern >> -1

Os resultados do exemplo anterior são os seguintes:

  • result1 é de 2560 (0000 1010 0000 0000).

  • result2 é de 160 (0000 0000 1010 0000).

  • result3 é 2 (0000 0000 0000 0010).

  • result4 é de 640 (0000 0010 1000 0000).

  • result5 é 0 (deslocado 15 lugares para a direita).

O valor do turno para result4 é calculado como 18 E 15, que é igual a 2.

O exemplo a seguir mostra deslocamentos aritméticos em um valor negativo.

Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13

Os resultados do exemplo anterior são os seguintes:

  • negresult1 é -512 (1111 1110 0000 0000).

  • negresult2 é -1 (o bit de sinal é propagado).

Consulte também